sql 语句系列(列举非索引外键)[八百章之第九章]
列举非索引外键
列举出那些外键没有添加索引。
目的:
1.减少锁。
2.外键添加索引,提示了查询性能,因为要与父表做连接查询做笛卡尔积。
下面只要会复制即可,没有会去从新写一遍的。
select fkeys.table_name,fkeys.constraint_name,fkeys.column_name,ind_cols.index_name
from (
select a.object_id,d.column_id,a.name table_name,b.name constraint_name,d.name column_name
from sys.tables a join
sys.foreign_keys b
on (a.name='EMP'
and a.object_id=b.parent_object_id
)
join sys.foreign_key_columns c
on (b.object_id=c.constraint_object_id)
join sys.columns d
on (c.constraint_column_id=d.column_id and a.object_id=d.object_id)
) fkeys
left join(
select a.name index_name,b.object_id,b.column_id
from sys.indexes a,sys.index_columns b
where a.index_id= b.index_id
) ind_cols on (fkeys.object_id=ind_cols.object_id and fkeys.column_id=ind_cols.column_id)
where ind_cols.index_name is null