Wir verwenden es als Beispiel für eine einfache Abfrage: Wir möchten die Anzahl der Benutzer zählen, die keine Twitter-Handles haben.
EXPLAIN ANALYZE
SELECT COUNT(*) FROM customers WHERE twitter != '';
Es sieht auf den ersten Blick kryptisch aus und ist sogar noch länger als unsere Anfrage, und wenn man sich nicht auf ein kleines Beispiel realer Ausführungspläne konzentriert, kann es überwältigend sein 😭.
Aber es liefert nützliche Informationen. Wir können sehen, dass die Abfrageausführung 1,27 Sekunden dauerte, während die Abfrageplanung nur 0,4 Millisekunden dauerte (vernachlässigbare Zeit).
Der Ausführungsplan ist als inverser Baum strukturiert. In der nächsten Abbildung sehen Sie, dass der Ausführungsplan in verschiedene Knoten unterteilt ist, von denen jeder eine andere Operation darstellt, unabhängig davon, ob es sich um eine handelt Aggregation oder ein Scan.
Es gibt viele Arten von Knotenoperationen, von Scan-bezogenen („Seq Scan“, „Nur Index-Scan“ usw.), Beitreten verwandt( „Hash Be part of“, „Nested Loop“ usw.), Aggregationsbezogen („GroupAggregate“, „Combination“ usw.) und andere (‚Restrict‘, ‚Sortieren‘, ‚materialisieren‘ usw.). Glücklicherweise müssen Sie sich an all das erinnern.
Profi-Tipp Nr. 3 💃: Fokus ist der Schlüssel, achten Sie nur auf problematische Knoten.
Profi-Tipp Nr. 4 💃: Betrügen! Suchen Sie auf den problematischen Knoten nach ihrer Bedeutung Glossar erklären.
Sehen wir uns nun genauer an, woher wir wissen, welcher Knoten problematisch ist.
Sehen wir uns genauer an, was diese Kennzahlen tatsächlich bedeuten.
- Tatsächliche Schleifen: Die Anzahl der Schleifen, die derselbe Knoten ausführt, beträgt 1. Um die Gesamtzeit und Zeilen zu erhalten, müssen die tatsächliche Zeit und Zeilen mit den Schleifenwerten multipliziert werden.
- Tatsächliche Zeilen: die tatsächliche Anzahl der produzierten Reihen der Aggregat Knoten ist 1 (der Durchschnitt professional Schleife und wir haben Schleifen ist 1).
- Planreihen: die geschätzte Anzahl der produzierten Reihen der Aggregat Knoten ist 1. Die geschätzte Anzahl der Zeilen kann je nach Statistik abweichen.
- Tatsächliche Startzeit: Die Zeit, die benötigt wurde, um die erste Zeile in Millisekunden zurückzugeben Aggregat Der Knoten ist 1271.157 (aggregiert und umfasst frühere Vorgänge).
- Startkosten: beliebige Einheiten, die die geschätzte Zeit bis zur Rückgabe der ersten Zeile des darstellen Aggregat Der Knoten ist 845110 (aggregiert und umfasst frühere Vorgänge).
- Tatsächliche Gesamtzeit: Die Zeit, die benötigt wurde, um alle Zeilen in ms zurückzugeben Aggregat Knoten ist 1271,158 (der Durchschnitt professional Schleife und wir haben Schleifen ist 1 und aggregiert und schließt vorherige Operationen ein).
- Gesamtkosten: beliebige Einheiten, die die geschätzte Zeit zum Zurückgeben aller Zeilen von darstellen Aggregat Knoten ist 845110 (aggregiert).
- Planbreite: die geschätzte durchschnittliche Zeilengröße der Aggregat Der Knoten ist 8 Bytes groß.
Profi-Tipp Nr. 5 💃: Seien Sie vorsichtig bei Schleifen. Denken Sie daran, Schleifen zu multiplizieren, wenn Sie darauf achten Tatsächliche Zeilen Und Tatsächliche Gesamtzeit.
Wir werden im nächsten Abschnitt anhand eines praktischen Beispiels näher darauf eingehen.