Los índices, quizás, sean uno de los aspectos más desconcertantes de las bases de datos para los más inexpertos, pero a su vez, son muy importantes.
Quizás, para los que solo trabajais con Microsoft Access no sea un factor clave, ya que realmente es una de las debilidades, pero para MySQL y MariaDB los índices son muy importantes. En mi proyecto S·lar con la Universidad de Córdoba empecé con Access pensando que sería suficiente, pero la realidad es que acabé necesitando MySQL y toda su potencia. Cuando las tablas empezaron a rozar el Giga de tamaño, empecé a tener serios problemas de rendimiento, hasta que aprendí a usar los índices.
Consultas eternas
Cuando las consultas se ma hacían eternas, pensaba … pero si Google y Facebook usan MySQL, ¿Cómo es que a ellos les tardan las consultas muy poco, y a mi una eternidad?
¿Para qué sirven los índices?
- Sirven para acelerar las consultas en las bases de datos
- Ayudan a cumplir las restricciones de única, y clave foránea
Evidentemente, las consultas pueden ser ejecutadas sin claves, pero a cambio, el tiempo de resolución puede alargarse, y bastante!
De esta forma, consultas que llegaron a tardarme más de 45 minutos eran solventadas en menos de 1 segundo! Increible, no? Pues cierto!
Y ¿dónde está el secreto? Pues no lo hay, solo paciencia y analizar las consultas!
Un buen consejo es crea los índices pensando en las consultas que vas a utilizar! Por supuesto, hay que tener en cuenta si necesitas hacer ordenaciones, y también es importante el orden de los campos!! Crea los índices con las consutlas más importantes que vayas a hacer, y porque tener índices tiene un coste!
Por último, tres consejos importantes:
- Recupera cuantos menos datos para ejecutar la consulta
- El acceso secuencial es más rápido que el acceso aleatorio
- Evita ordenación, ya que las cáusulas SORT BY y GROUP BY tienen un coste adicional
Espero que os sea de utilidad!!