日期:2014-05-17  浏览次数:20559 次

数据库中如何查看每个表的每个索引名字和建立时间
数据库中如何查看每个表的每个索引名字和建立时间

求高人解答。
最好 
数据库 表名  字段名 索引名 建立时间 

关键是索引建立时间不知道怎么找

------解决方案--------------------
SELECT TOP 100 PERCENT --a.id, 

CASE WHEN b.keyno = 1 THEN c.name ELSE '' END AS 表名, 

CASE WHEN b.keyno = 1 THEN a.name ELSE '' END AS 索引名称, d.name AS 列名, 

b.keyno AS 索引顺序, CASE indexkey_property(c.id, b.indid, b.keyno, 'isdescending') 

WHEN 1 THEN '降序' WHEN 0 THEN '升序' END AS 排序, CASE WHEN p.id IS NULL 

THEN '' ELSE '√' END AS 主键, CASE INDEXPROPERTY(c.id, a.name, 'IsClustered') 

WHEN 1 THEN '√' WHEN 0 THEN '' END AS 聚集, CASE INDEXPROPERTY(c.id, 

a.name, 'IsUnique') WHEN 1 THEN '√' WHEN 0 THEN '' END AS 唯一, 

CASE WHEN e.id IS NULL THEN '' ELSE '√' END AS 唯一约束, 

a.OrigFillFactor AS 填充因子, c.crdate AS 创建时间, c.refdate AS 更改时间 

FROM dbo.sysindexes a INNER JOIN 

dbo.sysindexkeys b ON a.id = b.id AND a.indid = b.indid INNER JOIN 

dbo.syscolumns d ON b.id = d.id AND b.colid = d.colid INNER JOIN 

dbo.sysobjects c ON a.id = c.id AND c.xtype = 'U' LEFT OUTER JOIN 

dbo.sysobjects e ON e.name = a.name AND e.xtype = 'UQ' LEFT OUTER JOIN 

dbo.sysobjects p ON p.name = a.name AND p.xtype = 'PK' 

WHERE (OBJECTPROPERTY(a.id, N'IsUserTable') = 1) AND (OBJECTPROPERTY(a.id, 

N'IsMSShipped') = 0) AND (INDEXPROPERTY(a.id, a.name, 'IsAutoStatistics') = 0) 

ORDER BY c.name, a.name, b.keyno