Ugrás a tartalomhoz
100% helyi

SQL EXPLAIN terv formázó

Az EXPLAIN vagy EXPLAIN ANALYZE tervet beilleszthető szövegből olvasható, behúzott fává alakítja, a lassú részeket megjelöli.

Bemenet
Kimenet

SQL EXPLAIN terv formázó

Illessze be az EXPLAIN vagy EXPLAIN ANALYZE kimenetét, és az eszköz a szöveghalmazt műveletek behúzott fájává alakítja, minden csomópont költségével, sorszámával és időzítésével az oldala mellett. Ahelyett, hogy egy sűrű "cost=… rows=… actual time=…" anotációs blokkot pásztáz végig, egy olyan formát kap, amelyet egy pillantásra el tud olvasni — melyik vizsgálat mely összekapcsolódást táplál, és hol töltődik el a lekérdezés ideje.

Válassza ki az adatbázisának megfelelő adatbázis-típust: a PostgreSQL és MySQL EXPLAIN ANALYZE ugyanazt az behúzott "-> " fát használja, a MySQL klasszikus (nem-ANALYZE) EXPLAIN táblázatot sorról sorra feldolgozza, és a SQLite EXPLAIN QUERY PLAN saját ASCII-fát és id/parent formátumát kapja. Illesszen be egyszerű szöveget, vagy váltson JSON formátumra a PostgreSQL EXPLAIN (FORMAT JSON) és MySQL EXPLAIN FORMAT=JSON kimenetéhez. A sorok száma kapcsoló az becsült vagy tényleges sorokat mutatja, a drága csomópont küszöbértéke szabályozza, hogy az összes költség vagy idő hány százaléka nyeri el a "drága" jelölést a csomópontra, és a „Rejts el alatta" lehetővé teszi az alacsony költségű ágak levágását egy hosszú tervből, hogy a kiugró értékek előtérbe kerüljenek. Váltson a kimenet között behúzott fa és sima igazított táblázat között.

Az egyes csomópontok által jelentett költség és idő kumulatív — már tartalmazzák az alattuk lévő összes gyermeket — így az eszköz levonja az egyes csomópontok gyermekeit a rangsorolás előtt, ami megakadályozza, hogy a lekérdezés felső szintű csomópontja mindig "drágának" tűnjön. Az alatta lévő összefoglaló sor összeadja a műveleteket, számolja, hány volt megjelölve, és megnevezi a gyökértől a levélig terjedő leglassúbb ágat, így pontosan tudja, mely műveleti lánc vizsgálatára kell összpontosítania.

Mindenki helyileg fut a böngészőben — egy lekérdezés terve feltárhatja a tábla- és indexneveket, amelyeket szívesebben nem illesztene be egy véletlenszerű webes űrlapba, és semmi sem kerül feltöltésre sehova. Másolja ki a formázott fát, töltse le .txt fájlként, vagy küldje vissza a kimenetet a bemenetbe a küszöbértékek beállításához és az újraformázáshoz.

Gyakori kérdések

Milyen EXPLAIN formátumokat értelmez?
A PostgreSQL és MySQL 8 EXPLAIN ANALYZE fa kimenete, a MySQL klasszikus táblázatos EXPLAIN, a SQLite EXPLAIN QUERY PLAN (mind az ASCII-fa, mind az nyers id/parent/detail sorok), valamint a PostgreSQL és MySQL JSON terv formátumai.
Miért nem a felső szintű csomópont nincs mindig "drágáként" megjelölve?
A csomópont által jelentett költség és idő már tartalmazza alatta lévő mindent, ezért az eszköz az egyes csomópontok saját részletét hasonlítja össze a gyermekek levonása után — ez mutat rá a tényleges szűk keresztmetszetre ahelyett, hogy mindig a gyökeret emeli ki.
Mi történik, ha az SQLite terv nem rendelkezik költségadatokkal?
Az SQLite EXPLAIN QUERY PLAN nem jelent költséget vagy időzítést, így a terv még formázott marad, az összefoglaló pedig őszintén ezt mondja ahelyett, hogy valami olyasmit kitalálna.
A "Rejts el alatta" bármi is törlődik a tervemből?
Nem — csak ezeket az alacsony részletű sorokat zárja ki ebből a nézetből. A gyökérmüvelet mindig látható marad, hogy a fa rögzített maradjon; futtassa újra alacsonyabb küszöbértékkel, hogy mindent meglátson.
A lekérdezés terv sehova nem kerül feltöltésre?
Nem. Az elemzés és formázás teljesen a böngészőjében történik — a terv és a benne lévő tábla- vagy indexnevek soha nem hagyják el az eszközét.