检查表列上是否存在非聚集索引

时间:2009-07-14 00:52:21

标签: sql-server indexing

在SQL Server 2000中,如何检查表的单个列上是否存在非聚集索引?

3 个答案:

答案 0 :(得分:5)

您可以在sysindexessysindexkeys中查找。您还可以使用sp_help来解释表,包括所有索引。

select k.*, x.name
from  sysindexes x 
join sysindexkeys k on k.id = x.id
join syscolumns c on c.id = x.id and k.colid=c.colid
where x.id = object_id('yourtable')
and c.name='yourcolumn'
and x.indid > 1

您可以从k.keyno列中了解索引中键的位置,如果不是1,则只有与索引键顺序中前面的其他列组合时,该列才可能是SARGable。

答案 1 :(得分:1)

查看“sysindexes”视图...我现在在Mac上,所以我无法给你准确的,经过测试的查询..

SELECT * FROM sysindexes

答案 2 :(得分:0)

检查sys.indexes表的“type”列(对于值<> 1,表示不是群集) type_desc指定CLUSTERED,NONCLUSTERED或HEAP