如何解决当索引在多列上时检查索引是否存在
我们最近对我们的系统数据库运行了一份缺失索引报告,发现很多都缺失了,但由于我们的数据库可能与每个客户端的索引不同,我们希望创建一种方法来判断索引是否已经存在。
我们的许多索引可以在多列、多列包含包含、单列和单列包含包含。很多时候索引被添加,我们没有一个很好的跟踪系统,可能不会按照我们认为的那样命名。综上所述,我需要一种方法来检查以下条件是否已存在索引。
任何建议将不胜感激。
谢谢
解决方法
检查索引是否已经存在
SELECT * FROM sys.indexes
WHERE object_id = OBJECT_ID('<your table name here>')
AND name='<your index name here>')
这应该会为您提供带有列名的表中的所有索引。 https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-index-columns-transact-sql?view=sql-server-ver15
SELECT i.name AS index_name,COL_NAME(ic.object_id,ic.column_id) AS column_name,ic.index_column_id,ic.key_ordinal,ic.is_included_column
FROM sys.indexes AS i
INNER JOIN sys.index_columns AS ic
ON i.object_id = ic.object_id AND i.index_id = ic.index_id
WHERE i.object_id = OBJECT_ID('<your table here>')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。