Wiatam. Czy istnieje jakiś widok, gdzie mogę wyszukać tabele, które nie posiadają indeksu klastrowego?
Wiatam. Czy istnieje jakiś widok, gdzie mogę wyszukać tabele, które nie posiadają indeksu klastrowego?
Można to zrobić na kilka sposobów. Ja preferuję odpytanie widoku sys.indexes, który zawiera informacje o wszystkich indeksach, w tym również o tabelach nie posiadających indeksu klastrowego ;) Aby wyszukać takie tabele, należy wykonać następujące zapytanie:
SELECT *
FROM sys.indexes
WHERE index_id=0
Więcej informacji na temat tego widoku jest dostępnych w BOL. Dobrą ilustracją takiej sytuacji (tzn. wyświetlenia tabelki nie posiadającej indeksu
klastrowego w widoku sys.indexes) jest ten fragment webinarium poświęconego indeksom i widokom:
Inną metodą może być skorzystanie z funkcji sys.dm_db_index_physical_stats(), gdzie tak samo jak w przypadku sys.indexes, dodajemy warunek index_id=0. Opis funkcji i jej wywołania znajduje się w BOL.
Ponieważ funkcja sys.dm_db_index_physical_stats() zwraca dodatkowe informacje pozyskane w procesie skanowania informacji zawartej na stronach, na których zapisana jest tabela, to do szybkiego wyszukania tabel posiadających/nie posiadających indeksów klastrowych sugeruję skorzystanie z widoku sys.indexes.