sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo decidir cuándo usar el índice en la columna de la tabla

En general, mi estrategia de indexación sería algo así (estoy usando SQL Server exclusivamente por ahora; adáptela a su propio sistema de base de datos según sea necesario):

  • elige un bueno clave de agrupación:no es un GUID, no es un VARCHAR(250) o algo - un bueno la clave de agrupación es estrecha, única, estable y en constante aumento - algo así como una INT IDENTITY es perfecto. Hace de esta su clave principal agrupada -> le da su primer índice en la tabla

  • para cualquier columna que se utilice como clave externa en otra tabla, agregue un índice. Puede ser un índice de una sola columna, o puede ser un índice compuesto, lo que funcione mejor para su caso. Es importante que la columna de clave externa sea la primera columna en ese índice (si está utilizando un índice compuesto); de lo contrario, los beneficios para JOIN 's o para verificar la integridad referencial no estarán disponibles para su sistema

Y eso es todo por ahora.

Luego:ejecute su sistema, observe y mida, establezca una línea de base. ¿Es la aplicación lo suficientemente rápida? En caso afirmativo -> ha terminado, vaya a casa y disfrute de su tiempo libre.

Si no, comience a recopilar datos e indicaciones sobre por qué la aplicación no es lo suficientemente rápida. Mira por ej. cosas como los DMV en SQL Server que le informan sobre las consultas de peor rendimiento, o el índice DMV faltante . Analice esos. Vea lo que podría mejorar. Agregar un índice a la vez una y otra vez:observe, mida, compare con su línea de base.

Si tiene una mejora -> deje ese índice en su lugar y esta medida es su nueva línea de base. Enjuague y repita hasta que usted (y sus usuarios) estén satisfechos con el rendimiento de la aplicación (y luego vete a casa y disfruta de tu tiempo libre).

La sobreindexación en SQL Server puede ser peor que no tener ningún índice. ¡No comience con demasiados índices para empezar! Solo establezca buenos PK agrupada e índices no agrupados de clave externa, eso es todo, luego observe, mida, optimice y repita ese ciclo.



No