Hallo bin ich hoffe, jemand kann meine SQL-Theorie helfen. Ich muss eine Reihe von Berichten erstellen, die Joins aus mehreren Tabellen verwenden. Diese Berichte laufen viel langsamer als ich möchte, und ich hoffe, mein SQL zu optimieren, obwohl mein Wissen eine Wand getroffen hat und ich anscheinend nichts bei Google finde.SQL Mehrere Tabellen Join - Beste Optimierung
Ich hoffe, dass jemand hier mir einige Best Practice Anleitung geben kann.
Im Wesentlichen verbindet Ich versuche, über die Ergebnisse zu filtern gesetzt, wie es
Items INNER JOIN BlueItems ON Items.ItemID = BlueItems.ItemID AND BlueItems.shape = 'square'
LEFT JOIN ItemHistory ON Items.ItemID = ItemHistory.ItemsID
LEFT JOIN ItemDates ON Items.ItemID = ItemDates.ItemID
WHERE ItemDates.ManufactureDate BETWEEN '01/01/2017' AND '01/05/2017'
I reduziert später die Anzahl der Zeilen, die in zurück zu reduzieren kommt auf Blau Artikel herausfinden, dass innerer Füge, die Quadrate sind in beträchtlichem Ausmaß die Daten an diesem Punkt gesetzt?
Ich verstehe auch, dass die Where-Klausel intelligent genug ist, um den Datensatz zur Laufzeit zu reduzieren? Täusche ich mich? Gibt es alle Daten zurück und filtert nur diese Daten?
Jede Anleitung auf im Wesentlichen, wie diese Art der Abfrage zu beschleunigen wäre fantastisch, Index's und solche wurden bereits eingerichtet. Leider wird die Datenbank tatsächlich von jemand anderem verwaltet und ich erstelle einfach Berichte basierend auf ihrer Datenbank. Dies beschränkt mich darauf, nur meine Abfragen und nicht die Daten selbst optimieren zu können.
Ich denke, zu diesem Zeitpunkt ist es Zeit für mich zu versuchen, mein Wissen darüber zu verbessern, wie SQL die verschiedenen Möglichkeiten behandelt, Daten zu filtern und zu verstehen, welche tatsächlich den Datensatz reduzieren und den Filter einfach filtern. Jede Führung wäre sehr willkommen!
'Indexe und dergleichen wurden bereits erstellt '... können Sie uns zeigen, was Sie in Bezug auf die Indexierung getan haben? –
Hallo Tim, diese Seite der Dinge ist nicht in meinem Zuständigkeitsbereich, aber im Wesentlichen kann ich sehen, dass ein Index in den Primärschlüsselfeldern wie allen ItemID Feldern existiert. Leider wird die Datenbank tatsächlich von jemand anderem verwaltet und ich erstelle einfach Berichte basierend auf ihrer Datenbank. Dies beschränkt mich darauf, nur meine Abfragen und nicht die Daten selbst optimieren zu können. – SqlQuery123