SQL Query Analyzer
Analizza query SQL per performance, complessità e suggerimenti di ottimizzazione.
Come utilizzare SQL Query Analyzer
Incolla la query SQL
Incolla una o più query SQL nell'editor, oppure clicca "Carica esempio" per una query dimostrativa con problemi noti.
Analizza la query
Clicca "Analizza query" per eseguire i controlli automatici su performance e correttezza.
Leggi i findings
Consulta i findings raggruppati per severità (errori, avvisi, ottimizzazioni, info) con dettaglio e suggerimento per ciascuno.
Consulta la query ottimizzata
Se disponibile, passa alla tab "Query Ottimizzata" per vedere i suggerimenti di riscrittura.
Suggerimenti
- Analizza le query prima di eseguirle in produzione, specialmente UPDATE e DELETE.
- Usa sempre EXPLAIN ANALYZE sul tuo database per verificare il piano di esecuzione reale, oltre ai suggerimenti del tool.
- Preferisci JOIN espliciti (INNER JOIN, LEFT JOIN) alla sintassi con virgola nella FROM per evitare prodotti cartesiani accidentali.
Domande frequenti
Che tipo di problemi rileva l'analizzatore?
Rileva 10 categorie di problemi: SELECT *, UPDATE/DELETE senza WHERE, JOIN senza ON, prodotto cartesiano, subquery in WHERE, pattern N+1, LIKE con wildcard iniziale, funzioni su colonne indicizzate, LIMIT assente e hint su indici mancanti.
Come viene calcolato lo score di complessità?
È una somma pesata delle occorrenze di clausole SQL (SELECT, JOIN, WHERE, GROUP BY, UNION, ecc.), ciascuna con un peso diverso, con un tetto massimo di 100 punti. Più alto è il punteggio, più la query è strutturalmente complessa.
Cosa significa "UPDATE senza clausola WHERE" segnalato come errore critico?
Indica che la query UPDATE modificherebbe tutte le righe della tabella perché manca una condizione WHERE che limiti le righe interessate. È quasi sempre un errore da correggere prima dell'esecuzione.
Il tool supporta più dialetti SQL come PostgreSQL e MySQL?
I controlli sono basati su pattern SQL standard applicabili alla maggior parte dei dialetti. Alcuni suggerimenti, come gli indici funzionali GIN trigram, sono specifici per PostgreSQL e indicati esplicitamente nel testo del suggerimento.
Le mie query vengono inviate a un server per l'analisi?
No, l'analisi è interamente client-side tramite pattern matching ed espressioni regolari nel browser: nessuna query viene trasmessa.