Recientemente descubrí un fantástico script gratuito de la gente de BrentOzar Unltd
http://www.brentozar.com/blitzindex/
Esto hace un buen análisis de qué índices existen, con qué frecuencia se usan y con qué frecuencia el motor de búsqueda está buscando un índice que no existe.
Su orientación es generalmente buena. A veces se vuelve un poco sugestivo de ideas. En general, he hecho lo siguiente hasta ahora:
- Se eliminaron los índices que NUNCA se han leído (o tal vez menos de 50 veces al mes).
- Se agregaron los índices más obvios en claves y campos foráneos. Sé que usamos mucho.
¡No he agregado todos los índices recomendados, y volví una semana más tarde para encontrar que ya no se recomiendan ya que el motor de consulta está usando algunos de los otros índices nuevos!
En general, debe evitar los índices en:
- Tablas muy pequeñas (menos de 50 a 200 registros): a menudo el motor de consulta es más rápido si escanea la tabla en lugar de cargar el índice, leerlo, procesarlo, etc.
- Evite los índices en columnas con baja cardinalidad ( http://en.wikipedia.org/wiki/Cardinality_(SQL_statements) ) en la primera columna mencionada. Por ejemplo, indexar un campo de género (M / F) es de muy poca utilidad, es tan práctico escanear la tabla y encontrar el ~ 50% que coincida. Si aparece en la lista después de algo más específico en el índice (p. Ej., [Fecha de nacimiento, sexo]), eso es mejor; es posible que desee que todos los hombres nazcan en un período de tiempo determinado.
Los índices agrupados son buenos, normalmente se basan en su clave principal. Ayudan al motor de la base de datos a poner los datos en el disco en buen estado. Es muy esencial comprender esto para las tablas más grandes, ya que un buen índice agrupado a menudo reduce el espacio que ocupa la tabla.
He reducido algunas tablas de 900 MB a 400 MB, solo porque eran montones no construidos de antemano.
http://msdn.microsoft.com/en-us/library/aa933131(v=sql.80).aspx
Reorganizar / Reconstruir
Debería buscar verificar índices fragmentados. Un poco de fragmentación está bien, ¡no te obsesiones! http://technet.microsoft.com/en-us/library/ms189858.aspx ¡ Conozca la diferencia entre reorganizar y reconstruir!
Revisar regularmente
Las consultas cambian, los volúmenes de datos cambian, se agregan nuevas características, se eliminan las antiguas. ¡Debería mirarlos una vez al mes (o más a menudo si tiene grandes volúmenes) y buscar dónde puede ayudar a la base de datos!
Cuántos
En un video reciente, Brent recomienda (típicamente) no más de 5 índices en una tabla con mucha escritura (por ejemplo, tabla de pedidos), y no más de 10 si se lee mucho más de lo que se escribe (es decir, tabla de registro para análisis) http: / /www.youtube.com/watch?v=gOsflkQkHjg
En general
¡Depende!
Su kilometraje varía según la base de datos. Cubra lo obvio (apellido del empleado, fecha de pedido, etc.) en sus tablas más grandes (ahora / futuras). Monitoree, revise y ajuste según sea necesario. Debería ser parte de su lista de verificación de rutina al administrar su (s) base (s) de datos :)
¡Espero que esto ayude!