Performance - script
From Ibbddunq
Line 1: | Line 1: | ||
- | + | = Indices = | |
Un índice (o KEY, o INDEX) es un grupo de datos que MySQL asocia con una o varias columnas de la tabla. En este grupo de datos aparece la relación entre el contenido y el número de fila donde está ubicado. | Un índice (o KEY, o INDEX) es un grupo de datos que MySQL asocia con una o varias columnas de la tabla. En este grupo de datos aparece la relación entre el contenido y el número de fila donde está ubicado. | ||
Line 9: | Line 9: | ||
La sintaxis es ligeramente distinta segun la clase de índice: | La sintaxis es ligeramente distinta segun la clase de índice: | ||
- | PRIMARY KEY (nombre_columna_1 [,nombre_columna2...]) | + | PRIMARY KEY (nombre_columna_1 [,nombre_columna2...]) |
- | UNIQUE INDEX nombre_indice (columna_indexada1 [,columna_indexada2 ...]) | + | UNIQUE INDEX nombre_indice (columna_indexada1 [,columna_indexada2 ...]) |
- | INDEX nombre_index (columna_indexada1 [,columna_indexada2...]) | + | INDEX nombre_index (columna_indexada1 [,columna_indexada2...]) |
Podemos también añadirlos a una tabla después de creada: | Podemos también añadirlos a una tabla después de creada: | ||
- | ALTER TABLE nombre_tabla ADD INDEX nombre_indice (columna_indexada); | + | ALTER TABLE nombre_tabla ADD INDEX nombre_indice (columna_indexada); |
Los índices permiten mayor rápidez en la ejecución de las consultas a la base de datos tipo SELECT ... WHERE | Los índices permiten mayor rápidez en la ejecución de las consultas a la base de datos tipo SELECT ... WHERE | ||
Line 21: | Line 21: | ||
Otra regla básica es que son mejores candidatas a indexar aquellas columnas que presentan muchos valores distintos, mientras que no son buenas candidatas las que tienen muchos valores idénticos, como por ejemplo sexo (masculino y femenino) porque cada consulta implicará siempre recorrer practicamente la mitad del indice. | Otra regla básica es que son mejores candidatas a indexar aquellas columnas que presentan muchos valores distintos, mientras que no son buenas candidatas las que tienen muchos valores idénticos, como por ejemplo sexo (masculino y femenino) porque cada consulta implicará siempre recorrer practicamente la mitad del indice. | ||
+ | |||
+ | |||
+ | == Tips de indices == | ||
+ | |||
+ | Si necesitamos un select del tipo SELECT ... WHERE columna_1 = X AND columna_2 = Y y ya tenemos un INDEX con la columna_1, podemos crear un segundo indice con la columna 2, o mejor todavía, crear un único indice combinado con las columnas 1 y 2. Estos son los índices multicolumna, o compuestos. | ||
+ | |||
+ | No obstante si tienes índices multicolumna y los utilizas en las clausulas WHERE, incluir siempre de izquierda a derecha las columnas indexadas; o el indice NO se usará: |
Revision as of 12:31, 8 June 2009
Indices
Un índice (o KEY, o INDEX) es un grupo de datos que MySQL asocia con una o varias columnas de la tabla. En este grupo de datos aparece la relación entre el contenido y el número de fila donde está ubicado.
Los índices -como los índices de los libros- sirven para agilizar las consultas a las tablas, evitando que mysql tenga que revisar todos los datos disponibles para devolver el resultado.
Podemos crear el índice a la vez que creamos la tabla, usando la palabra INDEX seguida del nombre del índice a crear y columnas a indexar (que pueden ser varias): INDEX nombre_indice (columna_indexada, columna_indexada2...)
La sintaxis es ligeramente distinta segun la clase de índice:
PRIMARY KEY (nombre_columna_1 [,nombre_columna2...]) UNIQUE INDEX nombre_indice (columna_indexada1 [,columna_indexada2 ...]) INDEX nombre_index (columna_indexada1 [,columna_indexada2...])
Podemos también añadirlos a una tabla después de creada:
ALTER TABLE nombre_tabla ADD INDEX nombre_indice (columna_indexada);
Los índices permiten mayor rápidez en la ejecución de las consultas a la base de datos tipo SELECT ... WHERE
La regla básica es crear índices sobre aquellas columnas que se usen en una cláusula WHERE.
Otra regla básica es que son mejores candidatas a indexar aquellas columnas que presentan muchos valores distintos, mientras que no son buenas candidatas las que tienen muchos valores idénticos, como por ejemplo sexo (masculino y femenino) porque cada consulta implicará siempre recorrer practicamente la mitad del indice.
Tips de indices
Si necesitamos un select del tipo SELECT ... WHERE columna_1 = X AND columna_2 = Y y ya tenemos un INDEX con la columna_1, podemos crear un segundo indice con la columna 2, o mejor todavía, crear un único indice combinado con las columnas 1 y 2. Estos son los índices multicolumna, o compuestos.
No obstante si tienes índices multicolumna y los utilizas en las clausulas WHERE, incluir siempre de izquierda a derecha las columnas indexadas; o el indice NO se usará: