sql >> Base de Datos >  >> RDS >> Mysql

¿Cuál es el costo de indexar varias columnas de db?

Indexe lo que parezca más lógico (eso debería ser obvio, por ejemplo, una columna de ID de cliente en la tabla CLIENTES).

Luego, ejecute su aplicación y recopile estadísticas periódicamente para ver el rendimiento de la base de datos. RUNSTATS en DB2 es un ejemplo, espero que MySQL tenga una herramienta similar.

Cuando encuentre algunas consultas que se ejecutan con frecuencia y realizan análisis completos de la tabla (o tardan demasiado por otros motivos), entonces, y solo entonces , en caso de que agregue más índices. De poco sirve optimizar una consulta que se ejecuta una vez al mes a medianoche para que pueda terminar a las 12:05 en lugar de a las 12:07. Sin embargo, es una gran mejora reducir una consulta dirigida al cliente de 5 segundos a 2 segundos (eso sigue siendo demasiado lento, las consultas dirigidas al cliente deberían ser de menos de un segundo si es posible).

Más índices tienden a ralentizar las inserciones y acelerar las consultas. Así que siempre es un acto de equilibrio. Es por eso que solo agrega índices en respuesta específica a un problema. Cualquier otra cosa es una optimización prematura y debe evitarse.

Además, revise periódicamente los índices que ya tiene para ver si todavía los necesita. Es posible que las consultas que hicieron que agregara esos índices ya no se ejecuten con la frecuencia suficiente para garantizarlo.

Para ser honesto, no creo que indexar tres columnas en una tabla te haga sufrir a menos que planees almacenar una gran cantidad de filas :-) - la indexación es bastante eficiente.

Después de su edición que dice:

Mi respuesta es que 200 registros por día es un valor extremadamente pequeño para una base de datos, definitivamente no tendrá nada de qué preocuparse con esos tres índices.

Solo esta semana, importé un día de transacciones a una de nuestras tablas de base de datos en el trabajo y contenía 2,1 millones de registros (obtenemos al menos una transacción por segundo durante todo el día desde 25 máquinas separadas). Y tiene cuatro teclas compuestas separadas, lo que es un poco más intensivo que sus tres teclas individuales.

Ahora concedido, eso está en una base de datos DB2, pero no puedo imaginar que IBM sea tan mucho mejor que la gente de MySQL que MySQL solo puede manejar menos del 0,01% de la carga de DB2.