SqlServer,Oracle,db2,MySql查询表索引

SqlServer1. 查询表索引
SELECT
     索引名称=a.name
     ,表名=c.name
     ,索引字段名=d.name
     ,索引字段位置=d.colid
     ,c.status
  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='message' --查指定表
ORDER BY c.name,a.name,d.name;

  

1
SqlServer2. 查询没有索引的表
1
2
3
4
5
6
7
8
9
10
11
12
select from sysobjects where xtype='U'
   and name not in (
   SELECT c.name
   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='message' --查指定表
)
order by name

Oracle

1
2
3
4
5
select user_ind_columns.index_name,user_ind_columns.column_name,
user_ind_columns.column_position,user_indexes.uniqueness
from user_ind_columns,user_indexes
where user_ind_columns.index_name = user_indexes.index_name
and user_ind_columns.table_name = ‘你想要查询的表名字’;

db2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
     SUBSTR(SI.INDSCHEMA, 1, 30) AS INDSCHEMA,
     SUBSTR(SI.INDNAME, 1, 30) AS INDNAME,
     MGI.INDEX_SCANS,
     MGI.INDEX_ONLY_SCANS
FROM
    TABLE(MON_GET_INDEX('EPRICER''CTMTTRN', -2)) as MGI,
    SYSCAT.INDEXES AS SI
WHERE
    MGI.TABSCHEMA = SI.TABSCHEMA
    AND MGI.TABNAME = SI.TABNAME
    AND MGI.IID = SI.IID
ORDER BY
    MGI.INDEX_SCANS DESC;

MySql

1
SHOW index FROM 'tblname';
原文地址:https://www.cnblogs.com/AbelAngelo/p/13092943.html