MS SQL Server 使用 sys.indexes 表区分系统和用户定义的索引

ige*_*elr -1 index sql-server system-tables

我正在尝试编写一个 sproc 来维护我创建的所有索引。 在此处输入图片说明

我的索引显示在 sys.indexes 表中的随机编号行中,与系统索引混合。现在我想写一个 select 语句来只选择我创建的索引。(就像我可以为 sys.databases 中的数据库 'where database_id > 4' 做的那样)在这里,index_id 具有不同的含义并且不是唯一的。有人能帮我吗?谢谢你的时间。

ige*_*elr 5

这是一种选择用户定义表的所有索引的方法

select 
   idx.[name] as [Index]
from sys.indexes as idx
inner join sys.objects as obj on idx.object_id = obj.object_id
where idx.[name] is not null and obj.[type] = 'u'
order by idx.[name]
Run Code Online (Sandbox Code Playgroud)