Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DEPARTAMENTO DE INFORMÁTICA
Administración de Base
de Datos
Tercer Semestre
Ing. Lorena Bowen Mendoza
ADMINISTRACIÓN DE BASES DE DATOS
Objetivo de la Clase:
✓ Utilizar la herramienta EXPLAIN.
✓Comprender la indexación de archivos de texto
INDEXACIÓN
UNIDAD III
INDEXACIÓN
CÓMO ANALIZAR LAS CONSULTAS A LA BASE DE DATOS
• MySQL dispone de la sentencia EXPLAIN SELECT que nos permitirá
obtener información sobre el plan de ejecución de nuestras consultas
realizadas contra nuestra la base de datos.
EXPLAIN nombre_de_tabla
O:
EXPLAIN SELECT opciones_de_select;
El comando ANALYZE
EXPLAIN muestra una
TABLE actualiza las EXPLAIN es una ayuda
línea de información para
estadísticas de la tabla para decidir qué índices
cada tabla utilizada en la
como la cardinalidad de agregar a las tablas.
sentencia SELECT.
sus claves
Cognitive Cities Management Research Group (CMMA)
EXPLAIN
Pero,
Select Tipo de consulta a analizar. Por ejemplo, si se trata de una consulta sencilla su valor
_type: será SIMPLE.
Table: Nombre de la tabla a la que hacen referencia el resto de datos en la fila. Hay que
tener en cuenta que el orden de las filas será el que utilizará MySQL para acceder a
los datos.
Type: El tipo de unión que se está usando. Indica como MySQL combinará los datos
de esa tabla.
System: Tabla con una única fila, por tanto, la respuesta es inmediata.
Const: En la tabla coincide una única fila con los criterios indicados.
Eq_ref: Una fila de la tabla 1 será leída por cada combinación de filas de la
tabla 2. Este tipo es usado cuando todas las partes de un índice se usan en la
consulta y el índice es UNIQUE o PRIMARY KEY.
Ref: Todas las filas con valores en el índice que coincidan serán leídos desde
esta tabla por cada combinación de filas de las tablas previas.
Cognitive Cities Management Research Group (CMMA)
EXPLAIN
Range: Sólo serán recuperadas las filas que estén en un rango dado, usando un índice
para seleccionar las filas. La columna key indica cual índice es usado, y el valor
key_len contiene la parte más grande de la clave que fue usada. La columna ref será
NULL para este tipo.
Index: Escaneo completo de la tabla para cada combinación de filas de las tablas
previas, revisando únicamente el índice.
ALL: Escaneo completo de la tabla para cada combinación de filas. Es el peor caso ya
que revisará todas las filas para cada combinación.
Possible_keys: Posibles índices que utilizará la consulta, aunque podría no usarse ninguno.
Key: Índice utilizado para ejecutar la consulta. Si indica el valor NULL, no se ha
escogido ningún índice.
Cognitive Cities Management Research Group (CMMA)
EXPLAIN
Key_len: Cuanto más pequeño sea este valor, más rápida será la consulta, pues nos
indica la longitud del índice usado, si no se usó ninguno contendrá NULL.
Rows: Número de filas que MySQL debe analizar para devolver los datos solicitados
Where used: Se usará una clausula WHERE para determinar que filas serán comparadas con
otra tabla. Si no deseamos regresar todas las filas desde la tabla, y el join es del tipo ALL o
index, es muy probable que hayamos escrito algo mal en la consulta.
Cognitive Cities Management Research Group (CMMA)
EXPLAIN
EJEMPLO
1. Conctarse a MySQL con el nombre de usuario y usar la base de datos donde se localiza
la tabla que se quiere analizar.
2. Ejecutar ahora una consulta EXPLAIN SELECT sobre la tabla.
Vamos a ejecutar la sentencia EXPLAIN SELECT sobre una tabla de ejemplo que contiene
información acerca de los productos que vende una empresa:
Vamos a ver dos posibles resultados del comando anterior, fijándonos principalmente
en los valores key, possible_keys, y rows:
Cognitive Cities Management Research Group (CMMA)
EXPLAIN
• En este primer posible resultado vemos que tanto possible_keys como key tienen
valor NULL, indicando que la tabla MySQL no tiene ningún índice que le permita acelerar
las consultas. También vemos que, según el valor de rows, se han recorrido 140 filas para
generar los resultados, algo que puede ser excesivo, ya que MySQL debe analizar fila por
fila y comprobar si el campo nombre del producto comienza por la letra M en cada una
de ellas.
id: 1
select_type: SIMPLE
table: productos
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 140
Extra: Using Cognitive
where Cities Management Research Group (CMMA)
EXPLAIN
BD de texto completo
BD de texto es un
único texto
Base de Datos T = ti,... ,tn
Utilizan documentos
como la estructura de
BD documentales
almacenamiento y
consulta de datos
Índice da
• T es grande soporte • Arreglo de sufijos
• Búsquedas frecuentes • Count, cuenta el número de • Trie de sufijos
• Suficiente espacio ocurrencias de un patrón P en • Árbol de sufijos
un texto T.
• Locate, ubica todas las
posiciones del texto T donde
el patrón de búsqueda P
ocurre. Índices
Índice sobre T
populares
Arreglo de sufijos
Trie de sufijos
Árbol de sufijos
Un árbol de sufijos es un Pat-Tree construido sobre el conjunto de todos
los sufijos de T codificados sobre alfabeto binario. Cada nodo interno
mantiene el numero de bit del patrón que corresponde usar en ese
punto para direccionar la búsqueda y las hojas contienen una posición
del texto que representa al sufijo que se inicia en dicha posición.
El Pat-Tree es una variante del Trie que consiste en eliminar todas aquellas
porciones del árbol que han degenerado en una lista. Para poder realizar
esta modificación, cada nodo del árbol almacena un numero, llamado
valor de salto que indica la longitud de la lista que ha sido eliminada.