Respuesta corta:
índices aceleran SELECT
's y ralentizar INSERT
' s.
Normalmente es mejor tener índices, porque aceleran select
más de lo que ralentizan insert
.
En una UPDATE
el índice puede acelerar las cosas camino hasta si un campo indexado se utiliza en la cláusula WHERE
y las cosas lentas abajo si update
uno de los campos indexados.
¿Cómo sabe cuándo usar un índice
Añadir EXPLAIN
en frente de su estado SELECT
.
así:
EXPLAIN SELECT * FROM table1
WHERE unindexfield1 > unindexedfield2
ORDER BY unindexedfield3
le mostrará la cantidad de MySQL trabajo tendrá que hacer por cada uno de los campos no indexados.
Usando esa información puede decidir si vale la pena agregar índices o no.
Explica también le puede decir si es mejor dejar caer y el índice
EXPLAIN SELECT * FROM table1
WHERE indexedfield1 > indexedfield2
ORDER BY indexedfield3
Si se seleccionan muy pocas filas, o MySQL decidieron ignoran el índice (que hace que de vez en cuando) entonces también podría soltar el índice, porque es ralentizando su insert
s pero no acelerando su select
.
Por otra parte, también podría ser que su declaración seleccionada no sea lo suficientemente inteligente.
(Disculpa la complejidad de la respuesta, intentaba mantenerlo simple pero fallido).
Enlace:
MySQL indexes - what are the best practices?
de referencia: [artículo de Wikipedia] (http://en.wikipedia.org/wiki/Index_ (base de datos)) –
de rebajas comió sus paréntesis –