查找没有索引的外键---网上找的

问题:     生产上曾经出现过因外键上没有索引导致死锁情况,经常需要查找没有索引的外键,以下给出从网上找到的SQL(忘记出处,见谅),整理于此备用。

column columns format a20 word_wrapped column table_name format a30 word_wrapped

select decode( b.table_name, NULL, ‘****‘, ‘ok‘ ) Status,     a.table_name, a.columns, b.columns from ( select substr(a.table_name,1,30) table_name,    substr(a.constraint_name,1,30) constraint_name,       max(decode(position, 1,     substr(column_name,1,30),NULL)) ||       max(decode(position, 2,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(position, 3,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(position, 4,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(position, 5,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(position, 6,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(position, 7,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(position, 8,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(position, 9,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(position,10,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(position,11,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(position,12,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(position,13,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(position,14,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(position,15,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(position,16,‘, ‘||substr(column_name,1,30),NULL)) columns     from user_cons_columns a, user_constraints b    where a.constraint_name = b.constraint_name      and b.constraint_type = ‘R‘ group by substr(a.table_name,1,30), substr(a.constraint_name,1,30) ) a, ( select substr(table_name,1,30) table_name, substr(index_name,1,30) index_name,       max(decode(column_position, 1,     substr(column_name,1,30),NULL)) ||       max(decode(column_position, 2,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(column_position, 3,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(column_position, 4,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(column_position, 5,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(column_position, 6,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(column_position, 7,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(column_position, 8,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(column_position, 9,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(column_position,10,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(column_position,11,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(column_position,12,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(column_position,13,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(column_position,14,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(column_position,15,‘, ‘||substr(column_name,1,30),NULL)) ||       max(decode(column_position,16,‘, ‘||substr(column_name,1,30),NULL)) columns     from user_ind_columns    group by substr(table_name,1,30), substr(index_name,1,30) ) b where a.table_name = b.table_name (+)   and b.columns (+) like a.columns || ‘%‘ /

时间: 2024-08-29 07:41:59

查找没有索引的外键---网上找的的相关文章

MySQL数据库(主键、索引、外键、触发器...)

主键: 能够唯一标识表中某一行的属性或属性组.一个表只能有一个主键,但可以有多个候选索引.主键常常与外键构成参照完整性约束,防止出现数据不一致.主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引. 索引: 是用来快速地寻找那些具有特定值的记录.主要是为了检索的方便,是为了加快访问速度, 按一定的规则创建的,一般起到排序作用. 唯一性索引:这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一. 注:当你的应

Oracle查询表信息(索引,外键,列等)

oracle查询表信息(索引,外键,列等) oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息,索引信息查询SQL如下,希望对大家有所帮助: 1.查询出所有的用户表 select * from user_tables 可以查询出所有的用户表 select owner,table_name from all_tables; 查询所有表,包括其他用户表 通过表名过滤需要将字母作如下处理 select * from user_tables where table_name

普通索引、唯一索引、主索引、外键索引、复合索引、非主码索引、聚集主码(聚集索引)、单列索引、多列索引

强烈建议看了第一个参考文献再来看这个篇博文,因为此处不准备讲底层数据结构的实现. 索引:索引(Index)是帮助MySQL高效获取数据的数据结构.提取句子主干,就可以得到索引的本质:索引是数据结构.其表达的是存储引擎的范畴,也就是说只有在存储引擎级别谈索引才有意义.MyISAM.InnoDB.Memory等.此处单纯就InnoDB存储引擎讨论. B-TREE.B+TREE数据结构. 在数据之外,数据库系统还维护着满足特定查找算 法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这

mysql、sqlserver、oracle三种数据库维护索引、外键、字段语法总结

mysql.sqlserver.oracle三种数据库维护索引.外键.字段语法总结 1.     MYSQL数据库 1)    创建索引 CREATE INDEX index_name ON table_name(column_list) CREATE UNIQUE INDEX index_name ON table_name(column_list) 修改表的方式添加索引 ALTER TABLE table_name ADD INDEX index_name(column_list) ALTE

003--PowerDesigner创建索引与外键

PowerDesigner创建索引与外键 一.创建索引 双击Table->Columns->创建索引 Step1:双击Table Step2:选择Columns->创建索引 弹出如下窗口: Step3:选择columns标签 Step4:选择Add Columns.. Step5:勾选要作为索引的列即可. 二.创建外键 如有二张表A和表B,A表b_id是外键,指向B表主键b_id                 创建外键方式: 1.A表b_id(外键)与B表b_id(主键)名称相同,可直

表管理和索引,外键作用

表管理和索引,外键作用: 创建数据库create schema if not exists students character set 'gbk' collate 'gbk_chinese_ci'; cd students lsfile db.optcat db.optdefault-character-set=gbkdefault-collation=gbk_chinese_ci 修改数据库help alter database;help drop databases; help creat

oracle查询所有用户表的表名、主键名称、索引、外键等

1.查找表的所有索引(包括索引名,类型,构成列): select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表 2.查找表的主键(包括名称,构成列): select cu.* from user_cons_columns cu, user_constr

sql索引,外键,常用语句

http://www.cnblogs.com/zhenyulu/articles/25794.html http://www.cnblogs.com/tmyh/archive/2010/09/29/sqlindex_01.html http://www.cnblogs.com/Arlen/articles/1605626.html http://www.cnblogs.com/laozuan/archive/2012/08/05/2624016.html 建立外键 现在我要建立1张good表,

MySQL普通索引、唯一索引、主索引、外键索引、复合索引、全文索引的使用

1.普通索引 普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度.因此,应该只为那些最经常出现在查询条件(WHERE column = ...)或排序条件(ORDER BY column)中的数据列创建索引.只要有可能,就应该选择一个数据最整齐.最紧凑的数据列(如一个整数类型的数据列)来创建索引. 2.唯一索引 普通索引允许被索引的数据列包含重复的值.比如说,因为人有可能同名,所以同一个姓名在同一个"员工个人资料"数据表里可能出现两次或更多次. 如果能确定