如何通过INFORMATION_SCHEMA查找未显式关联约束的唯一索引?
如何通过INFORMATION_SCHEMA查找未关联约束的唯一索引
如果唯一索引是直接通过CREATE UNIQUE INDEX创建的独立索引(而非通过CREATE UNIQUE CONSTRAINT绑定约束生成的索引),这类索引不会出现在table_constraints视图中,常规的约束关联查询自然无法找到它们。
要获取所有唯一索引(包括未绑定到显式约束的),可以借助INFORMATION_SCHEMA.STATISTICS视图——所有唯一索引都会作为统计对象被记录在这里。以下是通用的查询语句:
SELECT s.table_schema, s.table_name, s.statistic_name AS unique_index_name, c.column_name FROM information_schema.statistics s JOIN information_schema.columns c ON s.table_schema = c.table_schema AND s.table_name = c.table_name AND s.column_name = c.column_name WHERE s.is_unique = 'YES' ORDER BY s.table_schema, s.table_name, s.statistic_name;
针对不同数据库的调整
- SQL Server:
is_unique是bit类型,条件需改为WHERE s.is_unique = 1 - 部分数据库的
STATISTICS视图字段略有差异,可根据实际数据库的语法规范调整筛选条件
内容的提问来源于stack exchange,提问作者WestCoastProjects
相关产品推荐
相关产品推荐

