create table parent_tb_test
(
id number(10),
name varchar2(32),
constraint pk_parent_tb_test primary key(id)
);
create table child_tb_test
(
c_id number(10),
f_id number(10),
child_name varchar2(32),
constraint pk_child_tb_test primary key(c_id),
foreign key(f_id) references parent_tb_test
);
SQL> select * from user_tables;
no rows selected
SQL> select * from user_indexes;
no rows selected
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
CHILD_TB_TEST
PARENT_TB_TEST
SQL> select index_name from user_indexes;
INDEX_NAME
------------------------------
PK_CHILD_TB_TEST
PK_PARENT_TB_TEST
在ORACLE数据库中,定义外键约束时,ORACLE是不会自动创建对应索引的,必须手动在外键约束相关的列上创建索引。那么外键字段上是否有必要创建索引呢?如果有必要的话,巡检时,如何找出外键字段上没有创建索引的相关表,并生成对应的索引的脚本呢?
外键缺失索引影响
外键列上缺少索引会带来三个问题,限制并发性、影响性能、还有可能造成死锁。所以对于绝大部分场景,我们应该尽量考虑在外键上面创建索引
抓出外键没创建索引的表
最新推荐文章于 2021-04-02 23:37:35 发布