Ich habe Oracle-Tabellencluster nicht selbst verwendet, aber ich verstehe, dass seine Indextabellencluster den Clusterindizes von MS SQL Server sehr ähnlich sind. Das heißt, die Zeilendaten werden physisch durch den Schlüssel des gruppierten Indexes organisiert.
Das ist ideal für eine stark besuchte Spalte, die eine relativ geringe Anzahl möglicher Werte (im Vergleich zur Gesamtzahl der Zeilen) aufweist, wobei die meisten Abfragen alle Zeilen mit einem bestimmten Wert abrufen möchten. Da alle diese Zeilen physikalisch zusammen gespeichert sind, wird die Platten-E/A, insbesondere die Suchzeit, reduziert.
"Ziemlich klein" ist nicht einfach zu definieren, aber Postleitzahlen in einer Adresstabelle erscheinen sinnvoll, wenn Sie häufig nach allen Adressen in der Region eines einzelnen Codes suchen. Länder-/Länder-/Gebietscodes sind wahrscheinlich eine zu kleine Auswahl für eine landesweite Adresstabelle.
Also, Sie wollen sie nicht auf Spalten mit wenigen möglichen Werten (z. B. M/F für Geschlecht) verwenden, weil dann das Clustering nichts kauft und Sie wahrscheinlich für Einfügungen kostet. Sie wollen auch niemals Clustering auf "autonumber" Ersatzschlüsselspalten (von Sequenzen in Oracle) verwenden, da dies einen "Hot Spot" im letzten Bereich der Tabelle erzeugen wird, da alle Einfügungen dort physisch passieren müssen. Sie möchten auch kein Clustering auf einen Spaltenwert anwenden, der aktualisiert wird, da das RDBMS den Datensatz physisch verschieben muss, um die gruppierte Sortierung beizubehalten.
Oracle-Tabellencluster sind nicht wie gruppierte SQLServer-Indizes. –
Es tut mir leid, dass ich so viel später gefragt habe, aber ich habe keinen weiteren Hinweis gefunden: Gibt es so etwas wie die Tabellencluster von Oracle in MSSQL? – landi