sql server - uso - Índices Múltiples vs Índices Multi-Columna
unique index sql server (5)
El índice de varias columnas se puede utilizar para consultas que hacen referencia a todas las columnas:
SELECT *
FROM TableName
WHERE Column1=1 AND Column2=2 AND Column3=3
Esto se puede consultar directamente utilizando el índice de varias columnas. Por otro lado, como máximo se puede usar uno de los índices de una sola columna (tendría que buscar todos los registros que tengan Columna1 = 1, y luego verificar Columna2 y Columna3 en cada uno de ellos).
Acabo de agregar un índice a una tabla en SQL Server 2005 y me puse a pensar. ¿Cuál es la diferencia entre crear 1 índice y definir varias columnas sobre tener 1 índice por columna que desea indexar?
¿Hay ciertas razones por las cuales uno debería ser usado sobre el otro?
Por ejemplo
Create NonClustered Index IX_IndexName On TableName
(Column1 Asc, Column2 Asc, Column3 Asc)
Versus
Create NonClustered Index IX_IndexName1 On TableName
(Column1 Asc)
Create NonClustered Index IX_IndexName2 On TableName
(Column2 Asc)
Create NonClustered Index IX_IndexName3 On TableName
(Column3 Asc)
Estoy de acuerdo con Cade Roux .
Este artículo debería ponerte en el camino correcto:
- Índices en SQL Server 2005/2008 - Mejores prácticas, Parte 1
- Índices en SQL Server 2005/2008 - Parte 2 - Internos
Una cosa a tener en cuenta, los índices agrupados deben tener una clave única (una columna de identidad que recomendaría) como la primera columna. Básicamente, ayuda a que sus datos se inserten al final del índice y no causen muchos IO de disco y divisiones de página.
En segundo lugar, si está creando otros índices en sus datos y están construidos inteligentemente, se reutilizarán.
por ejemplo, imagina que buscas en una tabla en tres columnas
estado, condado, zip.
- a veces se busca solo por estado
- A veces se busca por estado y condado.
- Usted busca frecuentemente por estado, condado, zip.
Luego un índice con el estado, condado, zip. Se utilizará en las tres búsquedas.
Si busca solo por zip, entonces el índice anterior no se utilizará (de todos modos, SQL Server) ya que zip es la tercera parte de ese índice y el optimizador de consultas no lo verá tan útil.
A continuación, podría crear un índice solo en Zip que se usaría en esta instancia.
Supongo que la respuesta que está buscando es que depende de las cláusulas de dónde se encuentran sus consultas de uso frecuente y también de las de su grupo.
El artículo ayudará mucho. :-)
Sí. Te recomiendo que revises los artículos de Kimberly Tripp sobre indexación .
Si un índice está "cubriendo", entonces no hay necesidad de usar nada más que el índice. En SQL Server 2005, también puede agregar columnas adicionales al índice que no forman parte de la clave, lo que puede eliminar los viajes al resto de la fila.
Al tener múltiples índices, cada uno en una sola columna puede significar que solo se utiliza un índice; deberá consultar el plan de ejecución para ver qué efectos ofrecen los diferentes esquemas de indexación.
También puede usar el asistente de ajuste para ayudar a determinar qué índices harían que una consulta o carga de trabajo diera el mejor rendimiento.
Si tiene consultas que usarán con frecuencia un conjunto de columnas relativamente estático, la creación de un único índice de cobertura que las incluya a todas mejorará dramáticamente el rendimiento.
Al colocar varias columnas en su índice, el optimizador solo tendrá que acceder a la tabla directamente si una columna no está en el índice. Los uso mucho en el almacenamiento de datos. El inconveniente es que hacer esto puede costar muchos gastos generales, especialmente si los datos son muy volátiles.
La creación de índices en columnas individuales es útil para las operaciones de búsqueda que se encuentran con frecuencia en los sistemas OLTP.
Debería preguntarse por qué está indexando las columnas y cómo se utilizarán. Ejecutar algunos planes de consulta y ver cuándo se están accediendo. La sintonización de índices es tanto instinto como la ciencia.
Un elemento que parece haberse perdido es la transformación de las estrellas. Los operadores de Intersección de índice resuelven el predicado calculando el conjunto de filas golpeadas por cada uno de los predicados antes de que se realice cualquier E / S en la tabla de hechos. En un esquema en estrella, indexaría cada clave de dimensión individual y el optimizador de consultas puede resolver qué filas seleccionar mediante el cálculo de intersección de índice. Los índices en columnas individuales dan la mejor flexibilidad para esto.