问题描述
嗨,
我从人力资源部创建了两个表emp,emp2。员工。
之后,我在下面执行插入语句
现在在两个表中employee_id是唯一的。
现在在两个表中employee_id不是唯一的。
然后我在下面运行更新语句
现在employee_id在emp表中是唯一的,但在emp2中不是唯一的
之后,我在2个表上运行了以下更新。
然后我注意到Emp2表上的update语句比emp表上的update花费的时间更少。
两个表都是从同一个表中创建的,并且除了employee_id列之外,具有相同的数据。
为什么在emp2上更新提交速度快于在EMP表上更新。
提前谢谢。
我从人力资源部创建了两个表emp,emp2。员工。
之后,我在下面执行插入语句
现在在两个表中employee_id是唯一的。
insert into emp select * from emp; --4 times insert into emp2 select * from emp2; --4 times复制
现在在两个表中employee_id不是唯一的。
然后我在下面运行更新语句
update emp set employee_id = rownum;复制
现在employee_id在emp表中是唯一的,但在emp2中不是唯一的
之后,我在2个表上运行了以下更新。
update emp set employee_id = employee_id; update emp2 set employee_id = employee_id;复制
然后我注意到Emp2表上的update语句比emp表上的update花费的时间更少。
两个表都是从同一个表中创建的,并且除了employee_id列之外,具有相同的数据。
为什么在emp2上更新提交速度快于在EMP表上更新。
提前谢谢。
专家解答
因此,LiveSQL脚本显示了emp的更新,在emp2上采用5cs与4cs。相差0.01秒。那不值得谈论!
特别是因为这是dbms_utility.get_time的最小度量单位。这可能是四舍五入或收集错误的结果。
的确,当我运行它时,它们都以6cs的速度出现:
运行性能测试时,请确保:
-重复几次。由于解析等原因,第一次执行的速度往往较慢。而且您可能会在其他运行中偶然获得缓慢的执行。多次运行允许您发现这些问题
-测试之间有有意义的不同表现!在我的书中,一个测试比另一个测试快一个单位的最小测量结果并不重要。
特别是因为这是dbms_utility.get_time的最小度量单位。这可能是四舍五入或收集错误的结果。
的确,当我运行它时,它们都以6cs的速度出现:
create table emp as select * from hr.employees; create table emp2 as select * from hr.employees; insert into emp select * from emp; insert into emp2 select * from emp2; insert into emp select * from emp; insert into emp2 select * from emp2; insert into emp select * from emp; insert into emp2 select * from emp2; insert into emp select * from emp; insert into emp2 select * from emp2; update emp set employee_id = rownum; commit; declare x number; begin x := dbms_utility.get_time; dbms_output.put_line( 'Time - ' || x ); update emp set employee_id = employee_id; dbms_output.put_line( 'Time - ' || ( dbms_utility.get_time - x ) ); end; / Time - 1803110186 Time - 6 declare x number; begin x := dbms_utility.get_time; dbms_output.put_line( 'Time - ' || x ); update emp2 set employee_id = employee_id; dbms_output.put_line( 'Time - ' || ( dbms_utility.get_time - x ) ); end; / Time - 1803110244 Time - 6复制
运行性能测试时,请确保:
-重复几次。由于解析等原因,第一次执行的速度往往较慢。而且您可能会在其他运行中偶然获得缓慢的执行。多次运行允许您发现这些问题
-测试之间有有意义的不同表现!在我的书中,一个测试比另一个测试快一个单位的最小测量结果并不重要。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1455次阅读
2025-03-13 11:40:53
Oracle RAC ASM 磁盘组满了,无法扩容怎么在线处理?
Lucifer三思而后行
884次阅读
2025-03-17 11:33:53
RAC 19C 删除+新增节点
gh
542次阅读
2025-03-14 15:44:18
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
498次阅读
2025-03-13 14:38:19
Oracle 如何修改 db_unique_name?强迫症福音!
Lucifer三思而后行
426次阅读
2025-03-12 21:27:56
Oracle DataGuard高可用性解决方案详解
孙莹
368次阅读
2025-03-26 23:27:33
墨天轮个人数说知识点合集
JiekeXu
314次阅读
2025-04-01 15:56:03
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
288次阅读
2025-04-08 09:12:48
风口浪尖!诚通证券扩容采购Oracle 793万...
Roger的数据库专栏
267次阅读
2025-03-24 09:42:53
切换Oracle归档路径后,不能正常删除原归档路径上的归档文件
dbaking
266次阅读
2025-03-19 14:41:51