2010-12-07 2 views
0

인덱싱의 수행 여부와 해당 유형의 수행 여부에 대한 정보가 포함 된 선택된 데이터베이스의 테이블 목록을 얻을 수있는 쿼리가 있습니까? 클러스터 된 비 클러스터형인덱싱 및 해당 형식을 확인하는 쿼리

미리 감사드립니다 !!

답변

1

어떻게

SELECT 
    i.name as IndexName, 
    o.name as TableName, 
    i.type_desc 
FROM sys.indexes i 
join sys.objects o on i.object_id = o.object_id 
where i.[type] = 2 
and i.is_unique = 0 
and i.is_primary_key = 0 
and o.[type] = 'U' 
+0

....... –

0

같은 대해 아래의 쿼리는 목록의 사용자 테이블은 인덱스없이 테이블을 나열합니다. 인덱스가없는 테이블은 index_name 열에 NULL이됩니다.

SELECT 
    sys.objects.name table_name, 
    sys.indexes.name index_name, 
    sys.indexes.type_desc index_type 
FROM sys.objects LEFT JOIN 
    sys.indexes 
ON sys.objects.object_id = sys.indexes.object_id 
where sys.objects.type_desc = 'USER_TABLE' 
+0

나는'sys.objects'의 타입을 정의하는 대신'sys.tables'에 참여할 것입니다 ... –

0

C#에서 사용할 수 SMO :

Server server = new Server(@".\SQLEXPRESS"); 
Database db = server.Databases["DBName"]; 
foreach(Table table in db.Tables) 
{ 
    foreach (Index index in table.Indexes) 
    { 
    } 
} 
내가 대신`sys.objects`의 유형을 정의 할 필요없이 sys.tables``에 가입 할
관련 문제