Índices y optimización de consultas

Dado que los �ndices hacen que las consultas se ejecuten m�s r�pido, podemos estar incitados a indexar todas las columnas de nuestras tablas. Sin embargo, lo que tenemos que saber es que el usar �ndices tiene un precio. Cada vez que hacemos un INSERT, UPDATE, REPLACE, o DELETE sobre una tabla, MySQL tiene que actualizar cualquier �ndice en la tabla para reflejar los cambios en los datos.

�As� que, c�mo decidimos usar �ndices o no?. La respuesta es "depende". De manera simple, depende que tipo de consultas ejecutamos y que tan frecuentemente lo hacemos, aunque realmente depende de muchas otras cosas.

La raz�n para tener un �ndice en una columna es para permitirle a MySQL que ejecute las b�squedas tan r�pido como sea posible (y evitar los escaneos completos de tablas). Podemos pensar que un �ndice contiene una entrada por cada valor �nico en la columna. En el �ndice, MySQL debe contar cualquier valor duplicado. Estos valores duplicados decrementan la eficiencia y la utilidad del �ndice.

As� que antes de indexar una columna, debemos considerar que porcentaje de entradas en la tabla son duplicadas. Si el porcentaje es demasiado alto, seguramente no veremos alguna mejora con el uso de un �ndice.

Otra cosa a considerar es qu� tan frecuentemente los �ndices ser�n usados. MySQL puede usar un �ndice para una columna en particular �nicamente si dicha columna aparece en la cl�usula WHERE en una consulta.

Si muy rara vez usamos una columna en una cl�usula WHERE, seguramente no tiene mucha sentido indexar dicha columna. De esta manera, probablemente sea m�s eficiente sufrir el escaneo completo de la tabla las raras ocasiones en que se use esta columna en una consulta, que estar actualizando el �ndice cada vez que cambien los datos de la tabla.

Ante la duda, no tenemos otra alternativa que probar. Siempre podemos ejecutar algunas pruebas sobre los datos de nuestras tablas con y sin �ndices para ver como obtenemos los resultados m�s r�pidamente. Lo �nico a considerar es que las pruebas sean lo m�s realistas posibles.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP