Visualizzare il piano di esecuzione
Apri in CalíopeMostra l'albero delle operazioni dell'ottimizzatore di query.
Dove si trova: Editor SQL › Visual EXPLAIN
Con una query SELECT nell'Editor SQL, premi Visual EXPLAIN nella barra degli strumenti. Calíope chiede al server il piano senza eseguire la query —EXPLAIN FORMAT=JSON in MySQL e MariaDB, EXPLAIN (FORMAT JSON) in PostgreSQL, SET SHOWPLAN_XML in SQL Server, EXPLAIN PLAN json = 1 in ClickHouse, EXPLAIN PLAN FOR in Oracle, EXPLAIN FORMAT='tidb_json' in TiDB— e apre la tab Visual EXPLAIN con l'albero dei nodi del piano.
Anche nell’Editor SQLite e nell’Editor DuckDB, senza server e offline: nella sezione Esegui SQL, il pulsante Visual EXPLAIN chiede il piano al motore del file — EXPLAIN QUERY PLAN in SQLite, EXPLAIN (FORMAT JSON) in DuckDB — e lo apre in questa stessa scheda. SQLite non stima le righe, quindi i suoi nodi non le riportano.
Ogni nodo mostra il tipo di accesso, l'indice usato (se applicabile), la stima delle righe e il dettaglio che aggiunge il motore: la condizione, l'indice scelto o il costo. Il tempo compare solo se il motore l'ha misurato, e senza eseguire la query nessuno lo misura.
SQL Server
In SQL Server ogni nodo mostra, al posto del tempo, il costo che l’ottimizzatore stima per il nodo con tutto ciò che ne dipende (EstimatedTotalSubtreeCost). Non sono millisecondi: sono unità dell’ottimizzatore, e servono a vedere quale ramo del piano pesa di più.
TiDB
TiDB non ha EXPLAIN FORMAT=JSON, quindi Calíope chiede EXPLAIN FORMAT='tidb_json'. Ogni nodo è un operatore di TiDB (TableReader, Selection, TableFullScan, IndexLookUp), e il suo dettaglio inizia con l'operatore e dice dove viene eseguito: cop[tikv] è TiKV, lo storage; senza annotazione, il nodo TiDB stesso. Uno stats:pseudo nel dettaglio avvisa che la tabella non ha statistiche e che le righe sono una stima predefinita: si raccolgono con ANALYZE in Manutenzione tabelle. Una tabella con un alias nella query compare con l'alias, non con il suo nome.
Oracle
In Oracle il piano viene scritto in PLAN_TABLE, e Calíope ne cancella le righe appena lo legge: chiedere il piano è una scrittura sul server, anche se la query è una SELECT. Il dettaglio di ogni nodo riporta l'operazione (TABLE ACCESS FULL, INDEX RANGE SCAN), i predicati access e filter e il costo con i byte stimati.
ClickHouse
In ClickHouse la lettura di ogni tabella è gialla se la chiave o un indice di salto ha scartato dei granuli, e rossa se li ha letti tutti. Il suo dettaglio comincia con i granuli letti su quelli presenti («granuli 2/123»), prosegue con ciò che ha scartato ogni indice, in granuli e parti, e termina con la stima di righe, parti e mark.
Navigare l'albero:
- macOS: la rotella del mouse o un pizzico a due dita sul trackpad per lo zoom; trascina per spostare l'area.
- iPad: pizzica con due dita per lo zoom, e trascina con un dito per spostarti.
- Su tutti: i pulsanti − e + della barra, con la percentuale in mezzo, e Adatta alla finestra per inquadrare tutto l'albero. Le scorciatoie sono ⌘−, ⌘+ e ⌘0.
La scala va dal 18 % al 350 %, che è spazio più che sufficiente per piani con molti livelli di annidamento.
Apple Vision Pro: come sull'iPad, con i suoi gesti: pizzicare e muovere per scorrere la tela, e pizzicare con due mani per lo zoom. I pulsanti e le scorciatoie sono gli stessi.
Parole chiave: explain, piano, ottimizzatore, albero, JSON explain, zoom, pan, navigare, pinch