Datenbanken optimieren normalerweise Abfragen, bevor sie ausgeführt werden. Für eine Abfrage, die mit JDBC oder einem Befehlszeilen-Client ausgegeben wird, ist es möglich, die tatsächlich optimierte Abfrage zu sehen, die von der Datenbank ausgeführt wurde. Ich verwende Oracle Database.So sehen Sie die aktuell optimierte SQL-Abfrage in einer Datenbank
0
A
Antwort
1
Ich glaube, Sie mißverstehen - die EXPLAIN PLAN zeigt Ihnen eine Zusammenfassung dessen, was das Optimierungsprogramm sieht, nicht eine De-facto-Abfrage:
Rows Execution Plan
-------- ----------------------------------------------------
12 SORT AGGREGATE
2 SORT GROUP BY
76563 NESTED LOOPS
76575 NESTED LOOPS
19 TABLE ACCESS FULL CN_PAYRUNS_ALL
76570 TABLE ACCESS BY INDEX ROWID CN_POSTING_DETAILS_ALL
76570 INDEX RANGE SCAN (object id 178321)
76563 TABLE ACCESS BY INDEX ROWID CN_PAYMENT_WORKSHEETS_ALL
11432983 INDEX RANGE SCAN (object id 186024)
Welche Entscheidungen der Optimierer macht, basieren auf Statistiken über die beteiligten Tabellen und alle Indizes . Aktualisieren Statistiken können dramatisch ändern, wenn sich die Dinge genug geändert haben.
Verwandte Themen
- 1. So sehen Sie die Deadletter-Nachrichten
- 2. Pflegen Sie die aktuell ausgewählte Zeile in einer Datagridview.
- 3. Wie kann ich die aktuell verwendete Quote in BQ sehen?
- 4. So sehen Sie die Wanduhrzeit in Visual Studio Profiler
- 5. Wie sehen Sie alle Tabellen in einer HSQLDB-Datenbank?
- 6. So strukturieren Sie Personen in einer Datenbank
- 7. So speichern Sie Kreditkartendaten in einer Datenbank?
- 8. So finden Sie die aktuell verfügbare Version eines Cordova-Plugins
- 9. So erhalten Sie die aktuell angemeldete Benutzer-ID ASP.NET Core
- 10. Wie sehen Sie die Daten einer Variablen?
- 11. mysql: sehen Sie alle offenen Verbindungen zu einer bestimmten Datenbank?
- 12. Polyline drawMapRect optimierte Zeichnung
- 13. So aktualisieren Sie die MySQL-Datenbank mit einer Schaltfläche "Senden"
- 14. So sehen Sie Speicherplatz Geschichte - Nagios Core
- 15. So erhalten Sie das aktuell ausgeführte Dateiverzeichnis in CasperJS
- 16. So sehen Sie das Schema einer db2-Tabelle (Datei)
- 17. sqlplus So finden Sie Details der aktuell verbundenen Datenbanksitzung
- 18. So importieren Sie die bak-Datei in die Azure-Datenbank
- 19. So testen Sie Benutzerberechtigungen für die Datenbank
- 20. So sehen Sie den Inhalt der Prüfbedingung für Oracle
- 21. Halten Sie datenbankorientierte Testsuiten aktuell
- 22. Optimierte arithmetische Methoden in R
- 23. So sehen Sie, was der Browser sendet
- 24. optimierte grafische Darstellung für die Web-Zeichnung
- 25. optimierte CSS für Browser
- 26. So verschlüsseln Sie sicher Kreditkarteninformationen in einer Datenbank
- 27. So durchsuchen Sie ein bestimmtes Feld in einer Datenbank
- 28. So verfolgen Sie gelöschte Datenbank
- 29. So speichern Sie Benutzereinstellungen (Benutzername, Passwort) in einer Windows-Anwendung für den aktuell angemeldeten Benutzer
- 30. Postgres-Datenbank Fehler fallen: pq: kann nicht die aktuell geöffnete Datenbank löschen
Um absolut präzise zu sein - DBMS schreibt oft Abfragen neu (durch Entfernen veralteter Teile, wie 'WO WAHR 'ODER' WO a = 1 UND WAHR' usw.). Aber ich denke auch, dass OP die EXPLAIN einfach falsch versteht. – zerkms
Was ist, wenn ich eine Join in einer Select-Abfrage anfordert, aber keine der Spalten der Joined-Tabelle angefordert wird und die Where-Klausel die Spalten der Join-Spalte nur für den Zweck einer Join-Verbindung enthält, die den Join unnötig macht. Wird der Join noch ausgeführt? –
"Zweck der Durchführung einer Join effektiv machen die Join unnötig" - warum denkst du so? Auch wenn Sie keine Felder aus der Join-Tabelle auswählen, kann die INNER JOIN-Klausel die Ergebnismenge ändern. Es ist nicht das DBMS-Geschäft - für Sie zu denken: Wenn Sie keinen Beitritt benötigen, entfernen Sie ihn einfach selbst. – zerkms