欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MSSQL·查询数据库中所有索引的相关信息

程序员文章站 2022-06-25 12:25:57
阅文时长 | 0.45分钟 字数统计 | 784字符 主要内容 | 1、引言&背景 2、声明与参考资料 『MSSQL·查询数据库中所有索引的相关信息』 编写人 | SCscHero 编写时间 | 2021/5/16 AM1:56 文章类型 | 系列 完成度 | 已完成 座右铭 每一个伟大的事业,都有 ......
阅文时长 | 0.45分钟 字数统计 | 784字符
主要内容 | 1、引言&背景 2、声明与参考资料
『mssql·查询数据库中所有索引的相关信息』
编写人 | scschero 编写时间 | 2021/5/16 am1:56
文章类型 | 系列 完成度 | 已完成
座右铭 每一个伟大的事业,都有一个微不足道的开始。

一、引言&背景   完成度:100%

a) 应对问题&场景

查询db中所有索引的相关信息。

b) 解决原理&方法

select case
           when t.[type] = 'u' then
               '表'
           when t.[type] = 'v' then
               '视图'
       end as '类型',
       schema_name(t.schema_id) + '.' + t.[name] as '(表/视图)名称',
       i.[name] as 索引名称,
       substring(column_names, 1, len(column_names) - 1) as '列名',
       case
           when i.[type] = 1 then
               '聚集索引'
           when i.[type] = 2 then
               '非聚集索引'
           when i.[type] = 3 then
               'xml索引'
           when i.[type] = 4 then
               '空间索引'
           when i.[type] = 5 then
               '聚簇列存储索引'
           when i.[type] = 6 then
               '非聚集列存储索引'
           when i.[type] = 7 then
               '非聚集哈希索引'
       end as '索引类型',
       case
           when i.is_unique = 1 then
               '唯一'
           else
               '不唯一'
       end as '索引是否唯一'
from sys.objects t
    inner join sys.indexes i
        on t.object_id = i.object_id
    cross apply
(
    select col.[name] + ', '
    from sys.index_columns ic
        inner join sys.columns col
            on ic.object_id = col.object_id
               and ic.column_id = col.column_id
    where ic.object_id = t.object_id
          and ic.index_id = i.index_id
    order by col.column_id
    for xml path('')
) d(column_names)
where t.is_ms_shipped <> 1
      and index_id > 0
order by i.[name];

二、声明与参考资料   完成度:100%

原创博文,未经许可请勿转载。

如有帮助,欢迎点赞、收藏、关注。如有问题,请评论留言!如需与博主联系的,直接博客私信scschero即可。