Frage

Ich habe 98W Zeilendaten.Wenn ich meine Daten mit Pub_Time sortieren möchte, habe ich ein Interesse gefunden.

Hier ist der SQL:

generasacodicetagpre.

es kostet 19s.

generasacodicetagpre.

es kostet 0,2s.

Ich möchte wissen, warum?

War es hilfreich?

Lösung

Sie haben wahrscheinlich einen Index auf pub_time auf Ihrem Tisch.

Daher kann die zweite Abfrage diesen Index verwenden, um nur die Datensätze mit Nicht-Null-Daten nach dem angegebenen Datum zurückzugeben, während die erste Abfrage den gesamten Tisch abfragen muss.

Andere Tipps

Es gibt eine Reihe von Möglichkeiten. Sie könnten eine große Anzahl von Zeilen mit ungültigen / Nulldaten in pub_time herausfiltern, aber ich bezweifle, dass Sie keine wesentliche Anzahl von diesen nicht bemerken / erwähnen würden.

Die drei Dinge, die sich in meinem Kopf anhalten, sind:

1 - Sie haben einen Index- oder Composite-Index mit Pub_Time, und die Einschränkung in Ihrer WHERE-Klausel löst die Verwendung eines anderen Zugriffspfads

aus.

2 - Sie hatten keine Statistiken für den Optimierer, wenn Sie Ihre erste Abfrage liefen. Wenn Sie die zweite Abfrage ausführen, wurde ein besserer Zugriffspfad dank einiger Informationen, die zwischen der ersten Abfrage passiert sind, ein besserer Zugriffspfad ausgewählt. Dies kann überprüft werden, indem Sie die erste Abfrage ein paar Mal mehrmals ausführen und sehen, ob es eine signifikante Leistungsverbesserung gibt.

3 - Ähnlich wie dem ersten Punkt konnte der Optimierer nur einen besseren Zugangsweg auswählen, der ausschließlich auf den Auswirkungen der WHEREN-Klausel basiert. Vielleicht den Hinweis darauf, dass Null- / Ungültige Werte nicht behandelt werden müssen, reicht aus - Ihr System könnte einen oder mehrere vollständige Tabellen-Scans vermeiden, um ungültige / null pub_times auszuweichen.

Die Gründe für die Gründe für dabei werden, wird schnell ein empirisches Venture - es ist schwer, mehr zu sagen, ohne Ihre Plattform & Version zu kennen. Aus dem Tag nehme ich an, dass Sie Oracle verwenden Weitere Informationen zum Oracle-Optimierer finden Sie in http://docs.oracle .com / cd / b10500_01 / server.920 / A96533 / optimpops.htm (dies ist für Oracle 9i v9.2, aber es hat eine anständige Erklärung der versionsunabhängigen Konzepte)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top