2011-09-28 11 views
5

Tenemos más de 500 tablas y queremos identificar qué tablas no tienen claves principales. Debido a que crear índice en una tabla grande ayudará a mejorar el rendimiento.SQL Server - Cómo encontrar si existe un índice agrupado

comando requeridos - para identificar mesa que montones (ya que no tiene índice agrupado)

Saludos

+0

Un PK puede ser un índice único 'CLUSTERED' o' NON-CLUSTERED'. Por lo tanto, puede tener tablas con PK pero sin índice agrupado. –

Respuesta

4
SELECT OBJECT_NAME(object_id) 
FROM sys.indexes 
WHERE index_id=0 
    AND OBJECTPROPERTY(object_id, 'IsUserTable') = 1 

encuentra todos los montones. Este problema es ortogonal a si existe o no un PK. Un montón puede tener un PK no agrupado y un índice agrupado no es necesariamente el PK. Para encontrar tablas sin PK, puede usar.

SELECT * 
FROM sys.tables t 
WHERE NOT EXISTS 
(
SELECT * 
FROM sys.indexes i 
WHERE is_primary_key=1 AND i.object_id = t.object_id 
) 
Cuestiones relacionadas