SQLITE EXPLAIN

Wie baut man SQL Queries und Indexe so, dass sie möglichst einfach und kurz sind und dabei trotztdem hoch effizient sind?

Es ist häufig eine “Glaubensfrage”, was eine Datenbank wirklich durchführt, womit man seine Statements “religiös” motiviert absetzt.

Doch da gibt es so ein Kommando, das den Nebel lichten kann…


Wenn man Tabellen per SQL abfragt und die Abfrage etwas komplizierter wird, und dann auch noch Sortierungen hinzukommen, kann es passieren, dass die Ausführung bei vielen Daten plötzlich extrem lange braucht.

Nun führt man Indexe ein und erhofft sich eine Verbesserung, die dann aber leider ausbleibt.

Tatsächlich kann es je nach Datenbank einen großen Unterschied ausmachen, ob man links mit rechts oder umgekehrt vergleicht, oder ob man zuerst sortiert und dann filtert oder anders herum.

Ein solches Problem quälte mich neulich in der Firma und ich verstand um’s Verrecken nicht, warum die benutzte SQLite Datenbank trotz Index so schlechte Antwortzeiten lieferte.

Wenn man aber ein EXPLAIN QUERY PLAN vor die eigentliche Abfrage packt, gibt einem SQLite (und auch so manche andere Datenbank) eine Liste der durchgeführten Schritte an.

Diese Information ist wahrlich Gold wert, denn nun kann man unterschiedliche Abfrage Varianten lokal testen und sieht sofort, wann und wenn ein Index genutzt wird und wann nicht.

Ohne den Query-Plan musste ich Abfragen mit riesigen Datenmengen quasi am Live-System ausprobieren, um zu sehen, dass etwas nicht OK war.

In meinem Fall musste ich eine “einfache Query”, die den Index ignorierte, durch eine etwas kompliziertere ersetzen um das gleiche Ergebnis aber mit Nutzung eines Index-Boost zu erhalten.

Fazit

Ein Lob auf meinen Kollegen, der mir EXPLAIN QUERY PLAN in Erinnerung rief!

Mir war gar nicht bewusst, dass es dieses Kommando in den erweiterten SQL-Standard geschafft hat und auf vielen Plattformen aushilft.

Zukünftig werde ich bei neuen Queries immer mal “nachsehen”, ob die Datenbank meinen Input auch so versteht, wie ich es sehe.

📧 📋 🐘 | 🔔
 

Meine Dokus über:
 
Weitere externe Links zu:
Alle extern verlinkten Webseiten stehen nicht in Zusammenhang mit opengate.at.
Für deren Inhalt wird keine Haftung übernommen.



Wenn sich eine triviale Erkenntnis mit Dummheit in der Interpretation paart, dann gibt es in der Regel Kollateralschäden in der Anwendung.
frei zitiert nach A. Van der Bellen
... also dann paaren wir mal eine komplexe Erkenntnis mit Klugheit in der Interpretation!