LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

SQLSERVER查出数据库的全部索引

freeflydom
2026年4月3日 9:22 本文热度 74
: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 架构名, 表名, 索引名;
  • 如果不加 i.type 过滤,会包含堆(无索引的表)记录(type = 0)。

  • 若要查看所有索引(包括 XML、空间等),可去掉 WHERE 条件。

方法二:使用系统存储过程 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' 仅限用户表。


该文章在 2026/4/3 9:22:14 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved