Jeśli nowa kolumna, którą dodajesz do indeksu, znajduje się na końcu listy kolumn - innymi słowy, jeśli lista kolumn starego indeksu jest prefiksem listy kolumn nowego indeksu - to wiersze które są posortowane według starych kolumn będą nadal sortowane według nowych kolumn. W Sybase SQL Server i prawdopodobnie starszych wersjach Microsoft SQL Server dostępna była opcja with sorted_data
, pozwalająca zadeklarować, że wiersze zostały już posortowane. Ale na MSSQL 2008 R2 wydaje się, że nie ma żadnego efektu; opcja jest akceptowana, ale cicho ignorowana. W każdym razie myślę, że opcja była najbardziej przydatna w przypadku indeksów klastrowych.
Inni wymienili with drop_existing
, co brzmi świetnie, ale dotyczy tylko droższych wersji MSSQL.
Jestem pewien, że czegoś mi brakuje, ale dlaczego nie możesz po prostu użyć tabeli 'DROP INDEX '.; UTWÓRZ UNIKALNY INDEKS ZA STÓŁ (Col1, Col2, Col3, Col4) ' –
@Lieven, myślałem o tym też. Czy można bezpiecznie PRZECIĄGAĆ, a następnie STWORZYĆ indeks z istniejącymi danymi w tabeli? –
Tak. Możesz upuszczać i tworzyć indeksy dowolnie. Jedyne, co można zauważyć, to spadek wydajności przy wykonywaniu zapytań, podczas gdy indeksy zniknęły, ale znikają, a tworzenie indeksu (żadnego klastra) nie ma ** wpływu ** na rzeczywiste dane przechowywane w tabelach * (Tworzenie wpływu na indeks klastrowany) fizyczne porządkowanie twoich danych, ale znowu, ** nie ** dane są tracone) * –