¿Cómo aprender a hacer indexación en MySQL? ¿Cuáles son algunos buenos consejos para los principiantes?

En general, tiene que mirar sus consultas y anticipar qué columnas deben ser indexadas en función de las cosas que usa en las cláusulas WHERE. Entonces, probablemente necesitará analizar continuamente sus consultas y refinar su estrategia de índice a medida que el uso de su aplicación cambie o agregue nuevas funciones.

Ese es un enfoque muy BÁSICO. También podría ser más sofisticado y comparar la velocidad de lectura de múltiples índices de una sola columna frente a un índice compuesto (¡asegúrese de probar diferentes permutaciones de la orden!) Y también averiguar los diferentes niveles de sobrecarga de escritura.

Como puedes ver, decidir qué indexar es difícil. Las grandes empresas son lo suficientemente afortunadas como para tener DBA dedicados a este tipo de cosas, pero muchos desarrolladores no pueden darse el lujo de intercambiar la creación de funciones por el ajuste de la base de datos.

Esa es una de las razones clave por las que he estado trabajando en Concourse, que automáticamente indexa los datos por usted. De hecho, he escrito un blog que detalla por qué y cómo indexamos todas las cosas de una manera eficiente.

Vea mi respuesta a una pregunta similar: la respuesta de Chris Schrader a SQL: ¿Cómo puedo explicar qué es un índice en una tabla a una persona no técnica?

Hay muchos conceptos erróneos e información sobre cuándo usar uno o cuándo son útiles. Es importante entender cómo un índice ayuda al rendimiento, ya que usar un índice es una compensación como cualquier otra cosa. Hay una gran cantidad de ideas erróneas comunes sobre índices o recomendaciones basadas en una sola experiencia o caso de uso.

Una cosa a tener en cuenta sobre MySQL es que solo hace uniones de bucle anidadas. Por lo tanto, agregar un índice en columnas unidas tiende a ser más beneficioso en más situaciones en MySQL que en otras bases de datos.

Lee mi presentación Cómo diseñar índices, realmente. Cubro muchos de los conceptos básicos.

Tiene que indexar las columnas de datos que se usan a menudo en las cláusulas WHERE, de modo que pueda examinar sus consultas existentes y buscar indices en pasos lógicos. Pero no exagere, porque la reconstrucción de indizes y tener indizes en defecto necesita espacio en disco. Si tiene alta cardinalidad, e. G. muchos valores diferentes en una columna, la indexación puede ser buena. Si no está seguro, busque el comando EXPLAIN SELECT en Google. Seguro te ayudará en tu decisión.