2012-07-05 18 views
17

que estoy tratando de responder a la siguiente pregunta como parte de mi revisión de la universidad:MySQL EXPLIQUE ACTUALIZACIÓN

crear un índice en al menos un atributo de una tabla en la base de datos 'empleados', en el que utiliza el La herramienta 'EXPLAIN' de MySQL a muestra claramente el beneficio (en términos o retroactividad) y el negativo (en términos de actualización) de la creación del índice en cuestión.

Para la primera parte he creado un índice en las empleados mesa y se utiliza la siguiente consulta antes y después de que el índice para probar que es beneficioso desde el punto de vista de recuperación:

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

Este índice tuvo el efecto de reducir las filas accedidas de 300,000 a solo 63.

Ahora, estoy perplejo sobre cómo hacer la segunda parte. Esperé poder utilizar el comando EXPLAIN con ACTUALIZAR pero no funciona para eso.

El ACTUALIZACIÓN consulta que estoy tratando de analizar es el siguiente:

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

¿Es esta una consulta adecuada para responder a la pregunta y cómo hago para analizar.

Muchas gracias de antemano.

Respuesta

32

EXPLAIN UPDATE existe en MySQL 5.6 pero no en MySQL 5.5 comparando el documento de MySQL. ¿Lo intentó en el servidor MySQL 5.6?

+0

No tengo la opción de moverme a 5.6. ¿Cuál es la forma recomendada de averiguar por qué una actualización de MySQL 5.5 es lenta si no hay explicación en 5.5? –

+3

Explicar plan funciona en 5.5, en instrucciones SELECT. Si realmente desea ver por qué la actualización es lenta, suponiendo que es la cláusula where de la actualización lenta, intente hacer un plan de explicación en una instrucción select con la cláusula where que le dé alguna pista. Además, puede clonar el db y actualizar a 5.6 para probarlo también. –

+0

También puede consultar el comentario de esta pregunta. http://dba.stackexchange.com/questions/49788/query-execution-plan-for-mysql# –

10

El documento de referencia de MySQL 5.6: http://dev.mysql.com/doc/refman/5.6/en/explain.html

A partir de MySQL 5.6.3, permitió sentencias explicables para la explicación están SELECT, DELETE, INSERT, REPLACE, y UPDATE. Antes de MySQL 5.6.3, SELECT es la única declaración explicable.