【SQL】查询表有哪些索引

文章目录

    • 索引
    • 使用系统表
    • 使用系统存储过程
    • 引用

索引

在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息。

当表中有大量记录时,若要对表进行查询,第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。

使用系统表

-- 查询一个表中的索引及索引列,结果包含主键
USE AdventureWorks2008
GO
SELECT  indexname = a.name , tablename = c. name , indexcolumns = d .name , a .indid
FROM    sysindexes a JOIN sysindexkeys b ON a .id = b .id  AND a .indid = b.indid
        JOIN sysobjects c ON b .id = c .id
        JOIN syscolumns d ON b .id = d .id  AND b .colid = d .colid
WHERE   a .indid NOT IN ( 0 , 255 )  
-- and   c.xtype='U'   and   c.status>0 -- 查所有用户表
AND c .name = 'DatabaseLog' --查指定表
ORDER BY c. name ,
        a.name ,
        d.name



SELECT i.name AS index_name  
    ,i.type_desc  
    ,is_unique  
    ,ds.type_desc AS filegroup_or_partition_scheme  
    ,ds.name AS filegroup_or_partition_scheme_name  
    ,ignore_dup_key  
    ,is_primary_key  
    ,is_unique_constraint  
		,has_filter
    ,fill_factor  
    ,is_padded  
    ,is_disabled  
    ,allow_row_locks  
    ,allow_page_locks  
FROM sys.indexes AS i  
INNER JOIN sys.data_spaces AS ds ON i.data_space_id = ds.data_space_id  
WHERE is_hypothetical = 0 AND i.index_id <> 0   
AND i.object_id = OBJECT_ID('sys_personnel'); 

使用系统存储过程

sp_helpindex :报告有关表或视图上索引的信息。

/*  sp_helpindex [ @objname = ] 'name'
参数 :[@objname =] 'name'
是当前数据库中表或视图的名称。name 的数据类型为 nvarchar(776),没有默认值。 */

use DB_NAME
go

sp_helpindex 'Tablename'

返回代码值
0(成功)或 1(失败)
结果集:

列名 数据类型 描述
index_name sysname 索引名。
index_description varchar(210) 索引描述。
index_keys nvarchar(2078) 表或视图列,在这些列上构造索引。

被降序索引的列将在结果集中列出,该列的名称后面带有一个减号 (-),当列出被升序索引的列(这是默认情况)时,只带有该列的名称。
注释
如果已经用 UPDATE STATISTICS 的 NORECOMPUTE 选项设置了索引,那么在 sp_helpindex 的结果集中会显示这个信息。

引用

SQL查询表中的有那些索引
索引-百度百科

你可能感兴趣的:(#,数据库,sql,数据库,索引)