He estado buscando el uso de Vistas indexadas para aumentar el rendimiento en algunas de nuestras vistas más utilizadas.
Sin embargo, las vistas indexadas no admiten índices agrupados no únicos, lo que va un poco en contra de la precedencia establecida por el resto de la estructura de la base de datos.
Por ejemplo, aquí hay una versión simplificada de un par de nuestras tablas.
-Groups-
Group ID GroupName
-Users-
UserKey UserName FullName GroupID
Los índices están en Groups.GroupID (no agrupado) y Users.GroupID (agrupado). La clave agrupada se encuentra en GroupID en la tabla Usuarios, ya que normalmente se recuperaría un rango de usuarios de un grupo específico. Obviamente, tendría varios usuarios por grupo, por lo que este índice agrupado no es único.
Esto me deja un poco inseguro de cómo seguir esta precedencia al indexar mis vistas, como este ejemplo, ya que no puedo tener un índice agrupado no único.
ConsumableID ConsumableVariantID AllowThresholdOverwrite FullPath GroupID ManufacturerID Type ModelID
101 29 1 0.1.2.4. 4 3 3 2
En realidad, el único valor en esta Vista que siempre sería único es la columna ConsumableID, por lo que no tengo muchas opciones sobre dónde colocar mi índice.
¿Por qué las vistas no permiten índices agrupados no únicos cuando las tablas normales lo hacen?
(GroupID, UserID)
. No se limite a una sola columna para la clave. 2 - Me imagino que la limitación para una vista es porque este es un objeto de datos suplementario que necesita tener filas fácilmente vinculadas a los índices NC. Para una tabla, la clave CI no única recibe un int, pero creo que eso sería más desafiante con una vista indexada, ya que no es una tabla real pero necesita REFLEJAR una tabla real.