Jak wyświetlić listę tabel bez indeksów w mojej bazie danych SQL 2008?lista tabel bez indeksów w sql 2008
Edytuj
Chcę nazwę schematu i nazwę tabeli.
Jak wyświetlić listę tabel bez indeksów w mojej bazie danych SQL 2008?lista tabel bez indeksów w sql 2008
Edytuj
Chcę nazwę schematu i nazwę tabeli.
Powinno to obejmować to, czego szukasz. tj. tabele będące kupkami (bez indeksu klastrowego) i nie mają żadnych indeksów nieklastrowych. Używa nowej sys. obiekty tabel używane w latach 2005/2008.
ponadto prawdopodobnie chcesz spojrzeć na tabele, które mają indeks klastra, ale nie mają nieklastrowany indeksy (to jest 2. część sprawozdania, które zostawiłem zakomentowanym.
SELECT
schemaname = OBJECT_SCHEMA_NAME(o.object_id)
,tablename = o.NAME
FROM sys.objects o
INNER JOIN sys.indexes i ON i.OBJECT_ID = o.OBJECT_ID
-- tables that are heaps without any nonclustered indexes
WHERE (
o.type = 'U'
AND o.OBJECT_ID NOT IN (
SELECT OBJECT_ID
FROM sys.indexes
WHERE index_id > 0
)
)
-- OR
-- table that have a clustered index without any nonclustered indexes
--(o.type='U'
-- AND o.OBJECT_ID NOT IN (
-- SELECT OBJECT_ID
-- FROM sys.indexes
-- WHERE index_id>1))
select shema = s.name, table_name = o.name
from sys.objects o
join sys.schemas s on o.schema_id = s.schema_id
where type = 'U'
and not exists (select i.index_id
from sys.indexes i
where i.type <> 0 --ignore default heap index row
and o.object_id = i.object_id)
Edit:
I zostały zaktualizowane SQL zawierać nazwę schematu na żądanie. (Uwaga musiałem sys.objects zamiast sysobjects zaspokoić schematów, które zostały wprowadzone w SQL 2005)
Katalog tabele są udokumentowane w dokumentacji SQL Server, zobacz this link.
This FAQ zawiera więcej próbek i może być również przydatne.
Należy zauważyć, że są to tabele systemowe i można je zmieniać między wersjami serwera SQL, w miarę możliwości należy raczej używać widoków niezależnych od tabeli systemowej o nazwie Information Schema Views.
Oprócz sugestii @Philip Fourie warto zastanowić się, które indeksy utworzyć.
Po uzyskaniu dostępu do swoich danych program SQL Server 2008 śledzi miejsca, w których jego zdaniem pomocne będą indeksy (określa je jako "brakujące indeksy"). Są to strony pełne nowych dynamicznych widoków zarządzanych, które mogą być wyświetlane. te brakujące indeksy i kilka informacji o nich
Od MSSQlTips.
- sys.dm_db_missing_index_details - Zwraca szczegółowe informacje na temat zaginionego indeksu
- sys.dm_db_missing_index_group_s Tats - zwraca informacje podsumowujące o brakującym grup wskaźników
- sys.dm_db_missing_index_groups - Zwraca informacje o konkretnej grupy brakujących indeksów
- sys.dm_db_missing_index_columns (index_handle) - zwraca informacje o kolumnach tabeli bazy danych, których brakuje na indeksie. Jest to funkcja i wymaga podania parametru index_handle.
Oto przykład:
select SCHEMA_NAME(schema_id), name from sys.tables
where OBJECTPROPERTY(object_id, 'IsIndexed')= 0
Skąd wziąć schemat dla tych obiektów? –
są nadal aktualne w 2005/2008 jako widoki "zgodności".Napisałem własną wersję, która używa obiektów systemowych 2005/2008 –
@Raj Więcej, zaktualizowałem swoją odpowiedź podając nazwę schematu zgodnie z żądaniem –