Índices en MySQL

Posted by in MariaDB, MySQL

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!!

Google+ Comments - Comentarios Google+