MSSQL·查詢數據庫中所有索引的相關信息


閱文時長 | 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即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM