Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Liste der Tabellen ohne Indizes in SQL 2008

Dies sollte das abdecken, wonach Sie suchen. dh Tabellen, die Heaps sind (kein Clustered-Index) und keine Non-Clustered-Indizes haben. Es verwendet das neue sys. Tabellenobjekte, die 2005/2008 verwendet wurden.

Außerdem möchten Sie wahrscheinlich nach Tabellen suchen, die einen Clustered-Index, aber keine Nonclustered-Indizes haben (dies ist der zweite Teil der Anweisung, den ich auskommentiert habe.

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))