约束能确保数据完整性,禁止不符合业务规则的数据插入表中,即在数据录入前做一次判断
由于约束可以随时禁用和启用,在批量装载数据时,若能确保这些大批量插入的数据都符合数据完整性,则可以在插入前临时禁用约束,待批量装载操作完成后,再重新启用约束
环境准备
--无约束的表t_no_unique
drop table t_no_unique;
create table t_no_unique(a int);
--有约束的表t_unique
drop table t_unique;
create table t_unique(a int primary key);
性能对比
--显示sql语句运行时间
set timi on
--向表t_no_unique插入100万行数据
insert into t_no_unique select rownum from dual connect by level<=1000000;
commit;
--向表t_unique插入100万行数据
insert into t_unique select rownum from dual connect by level<=1000000;
commit;
实验结果
插入100W行数据,无约束2.4s,有约束6.67秒
大批量插入数据时,约束判断次数增多,性能消耗增多

数据完整性约束对批量插入性能的影响
文章探讨了数据完整性约束在确保数据质量方面的作用,以及在大批量数据插入时如何通过临时禁用约束来提升性能。实验显示,无约束的表在插入100万行数据时比有约束的表速度快,但启用约束会增加性能消耗。
3万+

被折叠的 条评论
为什么被折叠?



