有没有办法计算数据库中的每个表,唯一的数量和非唯一标识符(索引)的数量
我正在使用SQL Server 2012数据库
答案 0 :(得分:0)
试试这个:
SELECT t.name,
SUM(CASE WHEN is_unique = 1 THEN 1 ELSE 0 END) uniqueIndex,
SUM(CASE WHEN is_unique = 0 THEN 1 ELSE 0 END) unUniqueIndex
FROM sys.indexes i
INNER JOIN sys.tables t ON i.object_id = t.object_id AND t.type = 'U'
GROUp BY t.name;
答案 1 :(得分:0)
Select object_name(object_id),
sum(case when type = 1 then 1 else 0 end) 'Primary_Count',
sum(case when type = 2 then 1 else 0 end) 'Unique_Count'
from sys.indexes m
group by object_id,is_unique_constraint
Sys.Indexes将包含列类型,如果它是1表示唯一,如果它是2表示非唯一约束,如果它表示0表示特定object_id的堆。
答案 2 :(得分:0)
基于sys.tables查询,为您提供系统中的所有表,包括那些没有索引的表:
select
tab.name [table name]
,sum(case when idx.is_unique = 0 then 1 else 0 end) [unique]
,sum(case when idx.is_unique = 1 then 0 else 1 end) [non_unique]
from
sys.tables tab
left join sys.indexes idx
on idx.object_id = tab.object_id
group by
tab.name