微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当索引在多列上时检查索引是否存在

如何解决当索引在多列上时检查索引是否存在

我们最近对我们的系统数据库运行了一份缺失索引报告,发现很多都缺失了,但由于我们的数据库可能与每个客户端的索引不同,我们希望创建一种方法来判断索引是否已经存在。

我们的许多索引可以在多列、多列包含包含、单列和单列包含包含。很多时候索引被添加,我们没有一个很好的跟踪系统,可能不会按照我们认为的那样命名。综上所述,我需要一种方法来检查以下条件是否已存在索引。

  1. 名称是否已经存在?
  2. 索引是否已经存在于同一个表中,该索引具有相同的索引列,但具有相同的包含但名称不同?

任何建议将不胜感激。

谢谢

解决方法

检查索引是否已经存在

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 举报,一经查实,本站将立刻删除。