Wenn Sie nach Oracle-spezifischen Informationen suchen, würde ich den Ask Tom- Blog bei Oracle empfehlen . Im Allgemeinen denke ich, dass Sie den Rat finden werden, die Abfrage nicht zu optimieren. Sie erhalten gute Ratschläge zum Schreiben einer Abfrage, die der Optimierer optimieren kann. Die Oracle-Dokumentation ist ebenfalls online , und ich suche dort normalerweise nach aktuellen Informationen zu Oracle. Ich habe nicht mit SQLServer gearbeitet, daher habe ich keine Empfehlungen dafür.
Ich habe in den letzten Jahren nicht viel Neues im Bereich der Optimierung von Abfragen gesehen. Die große Änderung ist die Ablehnung des regelbasierten Optimierers, mit dem ich mich kaum erinnern kann. Ich verstehe jedoch, dass SQLServer immer noch ein regelbasiertes Optimierungsprogramm verwendet, sodass das Verständnis seiner Regeln hilfreich sein kann.
Ein Tool, mit dem Sie eine Abfrage bearbeiten, ausführen und einen Erklärungsplan erstellen können, hilft zu verstehen, mit welchen Änderungen Sie eine Abfrage erhalten, die eine gute Leistung erbringt. Ich habe mit AquaData Studio gute Ergebnisse erzielt und mag die Baumansicht sehr. SQL Developer sollte dies ebenfalls tun.
Wie bei jeder Optimierung benötigen Sie quantitative Daten zur Leistung. Dann können Sie feststellen, ob Sie es tatsächlich optimiert haben.
Wie eine Abfrage optimiert wird, hängt teilweise davon ab, wie der Parser die Abfrage erstellt und optimiert. In größerem Umfang hängt dies von der Verteilung der Daten ab, die Sie abfragen. Wenn in einer Oracle-Datenbank die Ergebnismenge vier Prozent oder mehr einer Tabelle ausmacht und zufällig verteilt ist, ist ein Tabellenscan normalerweise schneller als ein Index.
Ich habe daran gearbeitet, Abfragen für ein Entwicklerteam zu optimieren. Nur zwei oder drei Abfragen pro Jahr erforderten eine ernsthafte Optimierung. Die meisten Abfragen sind so einfach, dass sie nicht optimiert werden müssen. Der Rest kann normalerweise durch Hinzufügen fehlender Verknüpfungspfade erledigt werden.
Für Oracle gibt es drei einstellbare Einstellungen, die die Leistung erheblich beeinträchtigen können. Die Kosten für Index- und Daten-Lookups interagieren, um die Bedingungen zu ändern, unter denen ein In-Index verwendet wird oder nicht. Diese beiden können pro Sitzung eingestellt werden. Die Standardeinstellungen sind oft nicht optimal. Der andere Wert steuert, wie viele Alternativen der Optimierer versuchen wird. Das Erhöhen dieses Wertes hilft oft.
Die Optimierung wird erheblich von der Datenverteilung und dem Datenvolumen beeinflusst. Verwenden Sie bei der Optimierung am besten eine Kopie der Produktionsdatenbank oder zumindest eine Datenbank mit derselben Datenverteilung und demselben Volumen. Ich habe die Testumgebung stark beschädigt und eine Abfrage für die Fertigungsauftragsdatenbank optimiert. Die Test- und Entwicklungsdatenbanken hatten eine signifikant unterschiedliche Datenverteilung, was dazu führte, dass die Abfrage auch mit deutlich weniger Daten fehlschlug.