2010-12-07 109 views
0

是否有任何查詢,我們可以通過該查詢來獲取選定數據庫中的表的列表,以及是否索引是否在該索引中完成,以及如果已完成那麼哪些類型: 集羣 NonClustered查詢檢查索引及其類型

預先感謝您!

回答

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

我會加入到`sys.tables`而不必定義你的`sys.objects`的類型....... – 2010-12-07 08:53:54

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.tables`而不是必須定義你的`sys.objects`類型...... – 2010-12-07 08:54:40

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