de Martin LE TARNEC

Operaciones


Revisar la referencia de MySQL: http://dev.mysql.com/doc/refman/8.0/en/explain-output.html

Acceso a la tabla y el índice

El plan de ejecución de MySQL tiende a dar una falsa sensación de seguridad porque explica mucho cómo se usan los índices. Aunque es técnicamente correcto, no significa que los índices se utilicen de manera eficiente. La información más importante es una columna TYPE de la salida del explain de MySQL, pero incluso ahí la palabra INDEX no indica el uso correcto de la indexación.

eq_ref, const

Realiza un recorrido de un B-tree para encontrar una fila (como INDEX UNIQUE SCAN) y trae las columnas adicionales desde la tabla si se necesitan (TABLE ACCESS BY INDEX ROWID). La base de datos emplea esta operación si una clave primaria o una restricción de unicidad aseguran que el criterio de búsqueda coincide sólo con una entrada. Ver “Usar Índice" para comprobarlo, sin importar si el acceso a la tabla ocurre o no.

ref, range

Realiza un recorrido del B-tree, lee los nodos hoja para encontrar todas las entradas del índice. (similar a INDEX RANGE SCAN) y obtiene las columnas adicionales desde la primera tabla almacenada si es necesario (TABLE ACCESS BY INDEX ROWID). Ver “Usar índice para comprobarlo, sin importar si el acceso a la tabla tiene o no lugar.

index

Lee el índice entero (todos las filas) en el orden del mismo (similar a INDEX FULL SCAN).

ALL

Lee la tabla entera (todas las filas y las columnas) tal y como se almacena en disco. Además de la tasa alta de I/O, un escaneo de tabla debe leer todas las filas desde la tabla así que también puede agregar una carga considerable para la CPU. Ver también FULL TABLE SCAN.

Usando índice (en la columna “Extra”)

Cuando la columna “Extra” muestra “Using Index” (Usando un índice), significa que no se produce acceso a la tabla porque el índice tiene todos los datos requeridos. En este caso se puede pensar en utilizar solamente el índice. Sin embargo, si se usa una agrupación de índice (por ejemplo, el índice PRIMARY cuando se utiliza InnoDB), “Using Index” no aparece en la columna “Extra” aunque técnicamente se trata sólo de un escaneo del índice. Ver también Agrupación de datos: El segundo poder de la indexación.

PRIMARY (en la columna “key” o “possible_keys”)

PRIMARY es el nombre del índice creado automáticamente por la clave primaria.

Ordenar y agrupar

Usa filesort (en la columna “Extra”)

“Using filesort” en la columna Extra indica una operación de ordenamiento explícita sin importar dónde esté el ordenamiento (en la memoria principal o en el disco). El empleo de “filesort” requiere una gran cantidad de memoria para materializar el resultado intermedio (sin pipeline). Ver también Indexar Order By.

Sentencias Top-N

Implícito: sin “using filesort” en la columna “Extra”

Un plan de ejecución de MySQL no muestra una sentencia Top-N explícita. Si se usa la sintaxis limit y no se ve “using filesort” en la columna Extra, se ejecuta de forma pipeline. Ver también Seleccionar registros Top-N.

Previous pageNext page

You can’t learn everything in one day. Subscribe the newsletter via E-Mail, Bluesky or RSS to gradually catch up. Have a look at modern-⁠sql.com as well.

Acerca del autor

Foto de Markus Winand

Markus Winand es defensor del resurgimiento del SQL. Su misión es la de presentar a los desarrolladores la evolución de SQL en el siglo XXI. Es posible contratar a Markus según disponibilidad o como orador o consultor en winand.at.

Adquiere tu libro

Portada de “Rendimiento SQL explicado”: Ardilla corriendo en la hierba

La esencia del tuning de SQL en 200 páginas

Compra ahora
(libro de bolsillo y/o PDF)

Contratar a Markus

La manera más rápida y fácil de beneficiarse de su extenso conocimiento y experiencia.
Aprende más »

Entrar en contacto con Markus

Suscríbete a listas de correoRSS FeedMarkus Winand en LinkedInMarkus Winand en XINGMarkus Winand en TwitterMarkus Winand en Bluesky
Copyright 2017-2025 Martin LE TARNEC, Markus Winand. All righs reserved.
Aspectos legales | Contacto | SIN GARANTÍA | Marcas | Privacidad y RGPD