Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

liste des tables sans index dans sql 2008

Cela devrait couvrir ce que vous recherchez. c'est-à-dire des tables qui sont des tas (pas d'index clusterisé) et qui n'ont pas d'index non clusterisés. Il utilise le nouveau sys. objets de table utilisés en 2005/2008.

de plus, vous voudrez probablement rechercher des tables qui ont un index clusterisé, mais qui n'ont pas d'index non clusterisés (c'est la 2ème partie de la déclaration que j'ai laissée en commentaire.

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