Pregunta

Supongamos que tenemos este índice

CREATE INDEX IX_test ON t1(c1) INCLUDE (c2)

¿Esto significa que vamos a tener c2, tanto en la página de índice y la página real de datos? La verdadera pregunta es - ¿significa actualizar c2 que SQL Server tendrá que actualizar IX_test y la fila de datos real (índice agrupado)

¿Fue útil?

Solución

Sí, al igual que en cualquier campo que incluye un conjunto de datos duplicados de índice. Y todos los índices (índices) que incluyen un campo tienen que ser actualizados cuando cambia el campo.

Así que cuando extiende un índice para cubrir una consulta (o más de 1), está duplicando datos. Es siempre una solución de compromiso de.

Otros consejos

índice agrupado es una parte de la mesa, por lo que se acaba de actualizar la tabla en sí. Si se trataba de índice no agrupado a continuación, la respuesta habría sido afirmativa.

  

CLUSTERED   Crea un índice en el que el orden lógico de los valores de clave determina el orden físico de las filas correspondientes en una tabla. La parte inferior, o de la hoja, el nivel del índice agrupado contiene las filas de datos reales de la tabla. Una tabla o vista se permite un índice agrupado a la vez. Para obtener más información, consulte Estructuras índice agrupado.

// edición: Veo que he entendido de otra forma redonda. El punto era que si se actualiza una columna que tiene que actualizar: 1) índice agrupado 2) todos los índices no agrupados que contienen esa columna

Siempre hay una pregunta en el diseño de lo db / cuántos índices para crear -. Se trata de un caso de equilibrio entre la lectura y la velocidad de escritura (y lo que realmente se necesita)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top