当前位置:  开发笔记 > 后端 > 正文

查询检查表上的索引

如何解决《查询检查表上的索引》经验,为你挑选了4个好方法。

我需要一个查询来查看表中是否已有任何索引.



1> gkrogers..:

在SQL Server上,这将列出指定表的所有索引:

select * from sys.indexes
where object_id = (select object_id from sys.objects where name = 'MYTABLE')

此查询将列出没有索引的所有表:

SELECT name
FROM sys.tables 
WHERE OBJECTPROPERTY(object_id,'IsIndexed') = 0

这是一个有趣的MSDN常见问题解答,涉及相关主题:
查询SQL Server系统目录常见问题解答


如何查看这些索引所在的列?

2> nickf..:

如果你使用MySQL,你可以运行SHOW KEYS FROM tableSHOW INDEXES FROM table



3> Salim..:

如果您只需要索引列EXEC sp_helpindex'PET_NAME'



4> Donnie..:

大多数现代RDBMS都支持该INFORMATION_SCHEMA模式.如果你支持,那么你想要INFORMATION_SCHEMA.TABLE_CONSTRAINTS或者INFORMATION_SCHEMA.KEY_COLUMN_USAGE,或者两者兼而有之.

要查看您的支持,就像运行一样简单

select count(*) from INFORMATION_SCHEMA.TABLE_CONSTRAINTS

编辑:SQL Server确实有INFORMATION_SCHEMA,并且它比供应商特定的表更容易使用,所以只需使用它.


顾名思义,ANSI标准视图`INFORMATION_SCHEMA.TABLE_CONSTRAINTS`仅显示约束.虽然一些约束是索引,但并非所有索引都是约束.此视图不会显示常规索引:它只显示`UNTRQUE`,`PRIMARY KEY`,`FOREIGN KEY`或`CHECK`的`CONSTRAINT_TYPE'.请参阅[SQL-99 Complete,Really]中的相关部分(https://mariadb.com/kb/en/sql-99-complete-really/16-sql-catalogs/the-information-schema/information_schema-视图/ information_schematable_constraints /)
推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有