管理杂谈OA答疑ERP答疑教程搜索

SQLSERVER查出数据库的全部索引


:SQLSERVER查出数据库的全部索引


假设要查询 SQL Server 中数据库 a 的全部索引,可以使用系统视图 sys.indexes 结合 sys.tables 和 sys.schemas 来获取。以下是两种常用方法:

方法一:使用系统视图查询(推荐)

sql
USE a;  -- 切换到目标数据库
SELECT 
    SCHEMA_NAME(t.schema_id) AS 架构名,
    t.name AS 表名,
    i.name AS 索引名,
    i.type_desc AS 索引类型,
    i.is_unique AS 是否唯一,
    i.is_primary_key AS 是否主键,
    i.fill_factor AS 填充因子
FROM sys.tables t
INNER JOIN sys.indexes i ON t.object_id = i.object_id
WHERE i.type IN (1,2)  -- 1=聚集索引,2=非聚集索引(如需包含堆,去掉此条件)
ORDER BY 架构名, 表名, 索引名;

方法二:使用系统存储过程 sp_helpindex

针对单个表查询索引,但不适合一次性列出所有表:

sql
USE a;
EXEC sp_helpindex '表名';  -- 需逐一执行

跨数据库查询(不切换上下文)

如果不想切换数据库,可以使用完全限定名:

sql
SELECT 
    SCHEMA_NAME(t.schema_id) AS 架构名,
    t.name AS 表名,
    i.name AS 索引名,
    i.type_desc AS 索引类型
FROM a.sys.tables t
INNER JOIN a.sys.indexes i ON t.object_id = i.object_id
WHERE i.type IN (1,2);

以上查询会列出数据库 a 中所有用户表的索引信息。如需包含系统表,可改用 sys.all_objects 或 sys.objects 且 type='U' 仅限用户表。


更多精彩文章浏览...
点击右上角图标分享到朋友圈
官方网站:http://www.clicksun.cn
咨询热线:400-186-1886
服务邮箱:service@clicksun.cn