Ich habe versucht, indizierte Ansichten zu verwenden, um die Leistung einiger unserer am häufigsten verwendeten Ansichten zu steigern.
Indizierte Ansichten unterstützen jedoch keine nicht eindeutigen Clustered-Indizes, was ein wenig gegen die vom Rest der Datenbankstruktur festgelegte Priorität verstößt.
Hier ist zum Beispiel eine vereinfachte Version einiger unserer Tabellen.
-Groups-
Group ID GroupName
-Users-
UserKey UserName FullName GroupID
Die Indizes befinden sich auf Groups.GroupID (nicht gruppiert) und Users.GroupID (gruppiert). Der Clusterschlüssel, der sich in der Tabelle "Benutzer" in der Gruppe "ID" befindet, da am häufigsten ein Bereich von Benutzern aus einer bestimmten Gruppe abgerufen wird. Offensichtlich hätten Sie mehrere Benutzer pro Gruppe, sodass dieser Clustered-Index nicht eindeutig ist.
Dies lässt mich ein wenig unsicher, wie ich dieser Priorität beim Indizieren meiner Ansichten wie diesem Beispiel folgen soll, da ich keinen nicht eindeutigen Clustered-Index haben kann.
ConsumableID ConsumableVariantID AllowThresholdOverwrite FullPath GroupID ManufacturerID Type ModelID
101 29 1 0.1.2.4. 4 3 3 2
Tatsächlich ist der einzige Wert in dieser Ansicht, der immer eindeutig wäre, die Spalte ConsumableID, sodass ich keine andere Wahl habe, wo ich meinen Index platzieren soll.
Warum erlauben Ansichten keine nicht eindeutigen Clustered-Indizes, wenn dies bei regulären Tabellen der Fall ist?
(GroupID, UserID)
. Beschränken Sie sich nicht auf eine einzelne Spalte für den Schlüssel. 2 - Ich stelle mir vor, dass die Einschränkung für eine Ansicht darin besteht, dass dies ein zusätzliches Datenobjekt ist, für das Zeilen leicht mit den NC-Indizes verknüpft werden müssen. Für eine Tabelle wird dem nicht eindeutigen CI-Schlüssel ein int angehängt, aber ich denke, dass dies bei einer indizierten Ansicht schwieriger wäre, da es sich nicht um eine tatsächliche Tabelle handelt, sondern eine tatsächliche Tabelle reflektieren muss.