I wybrać liczbę indeksów nieklastrowych z mojej bazy danych z następujących czynności:wyłączyć wszystkie nieklastrowanym indeksy
SELECT sys.objects.name tableName,
sys.indexes.name indexName
FROM sys.indexes
JOIN sys.objects ON sys.indexes.object_id = sys.objects.object_id
WHERE sys.indexes.type_desc = 'NONCLUSTERED'
AND sys.objects.type_desc = 'USER_TABLE'
Chciałbym uruchomić następujące po sobie wyników:
ALTER INDEX indexName ON tableName DISABLE
Jak mam to zrobić? Czy istnieje lepszy sposób?
EDIT
Robię to dla celów tabelach obcinania, a następnie odbudowa z "ALTER INDEX REBUILD bla na stole". To musi być zautomatyzowane, więc upuszczenie i przebudowanie byłoby nieco wyższym działaniem konserwacyjnym, którego wolałbym uniknąć. Czy to zły plan? Potrzebuję środków do opróżniania stołów przy minimalnym obciążeniu.
Możecie być lepiej po prostu upuszczając je, ponieważ nie ma ALTER INDEX ENABLE, to oni muszą być odtworzone. Nie będą one utrzymywane, jeśli wyłączone. –
Po upuszczeniu utracisz definicje i będziesz musiał je zapamiętać, jeśli (kiedy) musisz je odtworzyć. Jeśli wyłączone, definicje będą utrwalone w tabelach systemowych i nie musisz się martwić o ponowne tworzenie ich od podstaw. –
@jl możesz ponownie włączyć indeks, używając ALTER INDEX REBUILD. – kristianp