SQL查询当前索引

 1 SELECT DELETE_INDEX_CMD = 'DROP INDEX ' + INDEXNAME + ' ON ' + TABLENAME,
 2        *
 3 FROM
 4 (
 5     SELECT TOP 10000000
 6            CASE
 7                WHEN t.[type] = 'U' THEN
 8                    ''
 9                WHEN t.[type] = 'V' THEN
10                    '视图'
11            END AS '类型',
12            SCHEMA_NAME(t.schema_id) + '.' + t.[name] AS TABLENAME,
13            INDEXNAME = i.[name],
14            COLUMNNAME = SUBSTRING(column_names, 1, LEN(column_names) - 1),
15            CASE
16                WHEN i.[type] = 1 THEN
17                    '聚集索引'
18                WHEN i.[type] = 2 THEN
19                    '非聚集索引'
20                WHEN i.[type] = 3 THEN
21                    'XML索引'
22                WHEN i.[type] = 4 THEN
23                    '空间索引'
24                WHEN i.[type] = 5 THEN
25                    '聚簇列存储索引'
26                WHEN i.[type] = 6 THEN
27                    '非聚集列存储索引'
28                WHEN i.[type] = 7 THEN
29                    '非聚集哈希索引'
30            END AS '索引类型',
31            CASE
32                WHEN i.is_unique = 1 THEN
33                    '唯一'
34                ELSE
35                    '不唯一'
36            END AS '索引是否唯一'
37     FROM sys.objects t
38         INNER JOIN sys.indexes i
39             ON t.object_id = i.object_id
40         CROSS APPLY
41     (
42         SELECT col.[name] + ', '
43         FROM sys.index_columns ic
44             INNER JOIN sys.columns col
45                 ON ic.object_id = col.object_id
46                    AND ic.column_id = col.column_id
47         WHERE ic.object_id = t.object_id
48               AND ic.index_id = i.index_id
49         ORDER BY col.column_id
50         FOR XML PATH('')
51     ) D(column_names)
52     WHERE t.is_ms_shipped <> 1
53           AND index_id > 0
54     ORDER BY i.[name]
55 ) XXX;

 

posted @ 2021-03-25 14:31  全栈攻城师  阅读(128)  评论(0)    收藏  举报