Ho esaminato l'utilizzo delle viste indicizzate per aumentare le prestazioni su alcune delle nostre viste più comunemente utilizzate.
Tuttavia, le viste indicizzate non supportano indici cluster non univoci che vanno leggermente contro la precedenza impostata dal resto della struttura del database.
Ad esempio, ecco una versione semplificata di un paio dei nostri tavoli.
-Groups-
Group ID GroupName
-Users-
UserKey UserName FullName GroupID
Gli indici si trovano su Groups.GroupID (Non cluster) e Users.GroupID (Clustered). La chiave cluster che si trova su GroupID nella tabella Users come più comunemente viene recuperato un intervallo di utenti da un gruppo specifico. Ovviamente avresti più utenti per gruppo, quindi questo indice cluster non è univoco.
Questo mi lascia un po 'incerto su come seguire questa precedenza quando indicizzo le mie opinioni come questo esempio, poiché non posso avere un indice cluster non univoco.
ConsumableID ConsumableVariantID AllowThresholdOverwrite FullPath GroupID ManufacturerID Type ModelID
101 29 1 0.1.2.4. 4 3 3 2
In realtà, l'unico valore su questa vista che sarebbe sempre unico è la colonna ConsumableID, quindi mi rimane poca scelta su dove posizionare il mio indice.
Perché le visualizzazioni non consentono indici cluster non univoci quando le tabelle normali lo fanno?
(GroupID, UserID)
. Non limitarti a una singola colonna per la chiave. 2 - Immagino che il limite per una vista sia perché si tratta di un oggetto dati supplementare che deve avere righe facilmente legate agli indici NC. Per una tabella, la chiave CI non univoca viene aggiunta a un int, ma penso che sarebbe più impegnativo con una vista indicizzata poiché non è una tabella reale ma deve RIFLETRE una tabella effettiva.