SQL Server: Wie schreibe ich eine alter index-Anweisung, um dem eindeutigen Index eine Spalte hinzuzufügen?
Ich habe eine UNIQUE, NON CLUSTERED
index auf eine Tabelle, die derzeit mit 4 Spalten für den index.
Erstellen Sie ein Skript ändern können, lediglich eine weitere Spalte hinzufügen, um diesen index. Die neue Spalte Typ ist varchar
.
Als Datenbank wird SQL Server 2005.
Vielen Dank im Voraus.
InformationsquelleAutor der Frage JL. | 2012-03-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht ändern Sie den index - alles, was Sie tun können, ist
DROP INDEX (indexname) ON (tablename)
)re-erstellen des neuen index mit der zusätzlichen Spalte:
Den
ALTER INDEX
- Anweisung in SQL Server verfügbar ist, ändern sich bestimmte Eigenschaften (Speicher-Eigenschaften etc.) von einem vorhandenen index, aber es nicht erlaubt, änderungen an den Spalten für den index.InformationsquelleAutor der Antwort marc_s
Wenn die neue Spalte, die Sie hinzufügen, um den index am Ende der Liste der Spalten - in anderen Worten, wenn in der Spaltenliste des alten index ist ein Präfix der Spalte, die Liste der neuen index - dann Zeilen, die sortiert werden, die alten Spalten noch sortiert werden, indem Sie die neuen Spalten. In Sybase SQL Server und vielleicht ältere Versionen von Microsoft SQL Server, es war ein
with sorted_data
option, um Ihnen zu erklären, dass die Zeilen bereits sortiert sind. Aber auf MSSQL 2008 R2 es scheint, haben keine Wirkung; die Entscheidung wird akzeptiert, aber ignoriert. In jedem Fall denke ich, dass die option meist nützlich, mit clustered-Indizes.Anderen erwähnt
with drop_existing
das klingt toll, aber ist für die teureren Versionen von MSSQL nur.InformationsquelleAutor der Antwort Ed Avis