2009-08-31 10 views
18

Ho trovato EXPLAIN SELECT query molto utile in MySQL perché fornisce informazioni su come SQL verrà eseguito e offre l'opportunità di analizzare, ad esempio, gli indici mancanti da aggiungere per migliorare la risposta PRIMA facendo la query stessa e analizzando le statistiche.EXPLAIN SELECT in altri database

La mia domanda è: In database come MS Sql, Firebird, Ingres, c'è un comando simile disponibile?

In Firebird abbiamo PLAN, ma è molto debole perché molte volte si devono eseguire query molto lunghe per visualizzare un semplice errore.

Con i migliori saluti,

Mauro H. Leggieri

+0

In Firebird PIANO è disponibile quando prepari * la query. Quindi in realtà non devi * eseguire * la query per scoprire che sarà un cattivo risultato. –

+0

In Firebird, se si utilizza IBExpert o Database Workbench: si può facilmente vedere da dove viene il problema. C'è un buon analizzatore PLAN che ti mostra un campo indicizzato o non indicizzato –

risposta

19

In Oracle:

EXPLAIN PLAN FOR SELECT … 

In PostgreSQL:

EXPLAIN SELECT … 

In SQL Server:

SET SHOWPLAN_XML ON 

GO 

SELECT … 

GO 
4

Per il server mssql è possibile utilizzare

SET SHOWPLAN_TEXT ON and SET SHOWPLAN_TEXT OFF 

questo impedirà query da effettivamente su stuttura ma tornerà esse richiedono Piano.

Per Oracle è possibile utilizzare

SET AUTOTRACE ON or EXPLAIN PLAN 

(non so su Firebird o Ingres)

+0

Bello! Non lo sapevo davvero – RiddlerDev

0

MS SQL ha un programma di utilità in Management Studio chiamato piano di esecuzione di visualizzazione (stimato e esatta) durante l'esecuzione una domanda.può anche visualizzare le statistiche per la query (tempo di esecuzione, numero di righe, traffico ecc.)

3

Per Ingres, di seguito viene fornito il piano definitivo scelto con le stime sul numero di righe, I/O disco e cicli CPU:

set qep 

per ottenere il piano, ma non eseguire SELECT anche aggiungere

set optimizeonly 

riattivare l'esecuzione di query:

set nooptimizeonly 

per ottenere i dati statistici effettivi per la query eseguita, da confrontare con l'uscita da "QEP set":

set trace point qe90 

Vedi http://docs.ingres.com/Ingres/9.2/SQL%20Reference%20Guide/set.htm per ulteriori informazioni su quanto sopra.