约束能确保数据完整性,禁止不符合业务规则的数据插入表中,即在数据录入前做一次判断
由于约束可以随时禁用和启用,在批量装载数据时,若能确保这些大批量插入的数据都符合数据完整性,则可以在插入前临时禁用约束,待批量装载操作完成后,再重新启用约束
环境准备
--无约束的表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秒
大批量插入数据时,约束判断次数增多,性能消耗增多