Przejdź do treści
100% lokalnie

Formater planów SQL EXPLAIN

Przekształć wyjście EXPLAIN lub EXPLAIN ANALYZE w czytelne drzewo operacji ze wskazanymi wolnymi częściami.

Wejście
Wynik

Formater planów SQL EXPLAIN

Wklej wyjście EXPLAIN lub EXPLAIN ANALYZE, a to narzędzie zmieni blok tekstu na drzewo operacji wcięte, przy czym każdy węzeł ma obok siebie wymienione koszty, liczby wierszy i czasy. Zamiast skanowania gęstego bloku adnotacji "cost=… rows=… actual time=…", widzisz strukturę, którą możesz zrozumieć na pierwszy rzut oka — który skan zasilany jest którym złączeniem i gdzie zapytanie rzeczywiście spędza swój czas.

Wybierz dialekt pasujący do Twojej bazy danych: PostgreSQL i MySQL 8 EXPLAIN ANALYZE używają tego samego wcięcia drzewa "-> ", klasyczna (bez ANALYZE) EXPLAIN tabela MySQL jest przetwarzana wiersz po wierszu, a SQLite EXPLAIN QUERY PLAN ma własne ASCII-drzewo i formaty id/parent. Wklej jako tekst zwykły lub przełącz format wejścia na JSON dla PostgreSQL EXPLAIN (FORMAT JSON) i MySQL EXPLAIN FORMAT=JSON. Przełącznik "Pokaż liczby wierszy" umożliwia szacowane i rzeczywiste liczby wierszy, próg drożego węzła kontroluje, jaki procent całkowitych kosztów lub czasu otrzymuje węzeł flagę "drogi", a ukrycie węzłów poniżej pozwala na przycinanie gałęzi o niskich kosztach z długiego planu, aby odleżeli wyróżniali się. Przełączaj wyjście pomiędzy wcięte drzewo a zwykłą wyrównaną tabelę.

Koszty i czasy, które zgłasza każdy węzeł, są łączne — już obejmują każdy element podrzędny — więc narzędzie odejmuje węzły podrzędne każdego węzła przed oceną czegokolwiek, co uniemożliwia węzłowi najwyższego poziomu zawsze wyglądać jak "drogi". Linia podsumowania pod planem sumuje operacje, liczy, ile zostało oflagowanych, i podaje najwolniejszą gałąź od głównego korzenia do liścia, więc dokładnie wiesz, który łańcuch operacji najpierw zbadać.

Wszystko uruchamia się lokalnie w Twojej przeglądarce — plan wykonania może ujawnić nazwy tabel i indeksów, które wolisz nie wklejać do losowego formularza internetowego, i nic z tego nie jest wysyłane nigdzie. Skopiuj sformatowane drzewo, pobierz je jako plik .txt, lub wyślij wyjście z powrotem na wejście, aby dostosować próg i przeformatować.

Częste pytania

Które formaty EXPLAIN rozumie?
Wyjście drzewa EXPLAIN ANALYZE PostgreSQL i MySQL 8, klasyczna tabelaryczna EXPLAIN MySQL, EXPLAIN QUERY PLAN SQLite (zarówno jej ASCII-drzewo, jak i surowe wiersze id/parent/detail), plus formaty JSON planu PostgreSQL i MySQL.
Dlaczego węzeł najwyższego poziomu nie jest zawsze oznaczony jako drogi?
Koszty i czas, które raportuje węzeł, już obejmują wszystko poniżej, więc narzędzie porównuje własny udział każdego węzła po odliczeniu jego węzłów podrzędnych — to wskazuje na rzeczywiste wąskie gardło zamiast zawsze wyróżniać korzeń.
Co się stanie, jeśli plan SQLite nie ma danych kosztów?
SQLite EXPLAIN QUERY PLAN nie raportuje kosztów ani czasów, więc drzewo jest nadal formatowane, a podsumowanie uczciwiej to mówi zamiast zgadywać podświetlenie.
Czy "Ukryj węzły poniżej" usuwa coś z mojego planu?
Nie — tylko pomija wiersze z niskim udziałem z tego widoku. Operacja główna zawsze pozostaje widoczna, więc drzewo zachowuje swój punkt kotwiczenia; uruchom ponownie z niższym progiem, aby ponownie wszystko zobaczyć.
Czy mój plan wykonania jest wysyłany gdziekolwiek?
Nie. Parsowanie i formatowanie odbywa się całkowicie w Twojej przeglądarce — plan i wszystkie nazwy tabel i indeksów w nim nigdy nie opuszczają Twojego urządzenia.