Máme tedy zákaznickou stránku, která si stěžuje na nějaký vážně pomalý výkon. Podíval jsem se jednou a je zřejmé, že problém je způsoben tím, že Somebody Else (grrrr) navrhl tabulku, ve které je uloženo zhruba 20 milionů záznamů plus bez sdruženého indexu.
Nyní chci v této tabulce vytvořit seskupený index - ale ve svém testovacím prostředí můj create index
příkaz běží již hodinu a stále není hotový. Zákaznická stránka je dílna, která funguje 24/7 a při vytváření indexu si nemůžu dovolit hodinu prostoje.
Existuje nějaká méně hrubá síla vytvoření indexu, která buď dokončí úlohu rychle, nebo to nějakým inteligentním způsobem, který nezabije úplně výkon serveru, když je zaneprázdněn?
Používáme SQL Server Enterprise Edition.
Pokud je váš server SQL verze Enterprise + a tabulka neobsahuje žádná pole BLOB - CREATE CLUSTERED INDEX ... WITH(ONLINE=ON)
Pokud ne - neexistuje žádný způsob kromě vytvoření tabulky se stejným schématem na straně a moudře do ní přenášet data, včetně všech operací INSERT/UPDATE/DELETE (například pomocí triggeru), a pak přesně zrušit staré tabulky a přejmenovat nové se stejným názvem jako staré - nevýhody jsou: pomalé, přidává další zatížení serveru a úložišti
Nejste si jisti, jakou verzi serveru SQL používá váš zákazník. V podniku můžete vytvořit index pomocí (ONLINE = ON), takže tabulka je k dispozici, dokud není index vytvořen.
Nezapomeňte použít všechna oprávnění, která byla požadována od originálu.