2012-07-05 11 views
17

sto cercando di rispondere alla seguente domanda come parte della mia revisione del college:MySQL SPIEGARE UPDATE

creare un indice su almeno un attributo di una tabella nel database 'dipendenti', in cui si utilizza il Lo strumento MySQL 'EXPLAIN' su mostra chiaramente il vantaggio (in termini o retreival) e il negativo (nei termini di aggiornamento ) della creazione dell'indice in questione.

Per la prima parte ho creato un indice sulle dipendenti tavolo e utilizzato la seguente query prima e dopo l'indice di dimostrare che è vantaggioso dal punto di vista recupero:

EXPLAIN SELECT * FROM employees WHERE birth_date = '1953-09-02'; 

Questo indice ha avuto l'effetto di ridurre le righe accessibili da 300.000 a solo 63.

Ora, sono perplesso su come eseguire la seconda parte. Mi aspettavo di essere in grado di utilizzare il comando EXPLAIN con UPDATE ma non funziona per quello.

Il UPDATE interrogazione sto cercando di analizzare è la seguente:

UPDATE employee SET first_name = 'first_name' WHERE birth_date = '1953-09-02'; 

È questo una query idoneo a rispondere alla domanda e come posso fare per l'analisi.

Molte grazie in anticipo.

risposta

32

EXPLAIN UPDATE esiste in MySQL 5.6 ma non in MySQL 5.5 confrontando il documento di MySQL. L'hai provato sul server MySQL 5.6?

+0

Non ho la possibilità di passare a 5.6. Qual è il modo consigliato per capire perché un aggiornamento di MySQL 5.5 è lento se non ci sono spiegazioni in 5.5? –

+3

Spiegare il piano funziona in 5.5, su istruzioni SELECT. Se vuoi veramente vedere perché l'aggiornamento è lento, supponendo che la clausola where nell'aggiornamento sia lenta, prova a fare un piano di spiegazione su un'istruzione select con la clausola where dovrebbe darti qualche suggerimento. Inoltre, è possibile clonare il db ed eseguire l'aggiornamento a 5.6 per il test. –

+0

Si può anche fare riferimento al commento di questa domanda. http://dba.stackexchange.com/questions/49788/query-execution-plan-for-mysql# –

10

Il doc di riferimento di Mysql 5.6: http://dev.mysql.com/doc/refman/5.6/en/explain.html

partire da MySQL 5.6.3, consentiti dichiarazioni spiegabili per EXPLAIN sono SELECT, DELETE, INSERT, REPLACE, e UPDATE. Prima di MySQL 5.6.3, SELECT è l'unica spiegazione spiegabile.