SQL 列举索引列

SQL 列举索引列,你想列出某个表的索引,包括构成索引的各列及其位置序号(如果有的话)。

SQL 列举索引列 问题描述

你想列出某个表的索引,包括构成索引的各列及其位置序号(如果有的话)。

SQL 列举索引列 解决方案

下面的解决方案因数据库的不同而有所差异,但都假设你希望列出 SMEAGOL 模式中的 EMP 表的索引信息。
DB2
查询 SYSCAT.INDEXES

1  select a.tabname, b.indname, b.colname, b.colseq
2    from syscat.indexes a,
3         syscat.indexcoluse b
4   where a.tabname   = 'EMP'
5     and a.tabschema = 'SMEAGOL'
6     and a.indschema = b.indschema
7     and a.indname   = b.indname

Oracle
查询 SYS.ALL_IND_COLUMNS

select table_name, index_name, column_name, column_position
  from sys.all_ind_columns
 where table_name  = 'EMP'
   and table_owner = 'SMEAGOL'

PostgreSQL
查询 PG_CATALOG.PG_INDEXESINFORMATION_SCHEMA.COLUMNS

1  select a.tablename,a.indexname,b.column_name
2    from pg_catalog.pg_indexes a,
3         information_schema.columns b
4   where a.schemaname = 'SMEAGOL'
5     and a.tablename  = b.table_name

MySQL
使用 SHOW INDEX 命令。

show index from emp

SQL Server
查询 SYS.TABLESSYS.INDEXESSYS.INDEX_COLUMNSSYS.COLUMNS

 1  select a.name table_name,
 2         b.name index_name,
 3         d.name column_name,
 4         c.index_column_id
 5    from sys.tables a,
 6         sys.indexes b,
 7         sys.index_columns c,
 8         sys.columns d.
 9  where a.object_id = b.object_id
10    and b.object_id = c.object_id
11    and b.index_id  = c.index_id
12    and c.object_id = d.object_id
13    and c.column_id = d.column_id
14    and a.name      = 'EMP'

SQL 列举索引列 扩展知识

说到查询,很重要的一点是要知道哪些列有索引。为那些经常被用来过滤数据并且相当有区分度的列添加索引,有利于提升查询的效果。索引对表之间的连接查询也非常有帮助。了解哪些列被加入了索引,能够有效地避免潜在的性能问题。此外,你可能希望查找关于索引自身的一些信息:遍历深度有多少级,有多少个不同的键,有多少个叶节点,等等。可以通过本实例中的解决方案所查询的视图和表来获取这类信息。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程