gpt4 book ai didi

sql - 截断后更新缓慢

转载 作者:行者123 更新时间:2023-12-01 10:14:52 28 4
gpt4 key购买 nike

我有一个相对简单的更新语句:

update sv_konginfo ki
set AnzDarl = 1
where kong_nr in (
select kong_nr
from sv_darlehen
group by kong_nr
having count (*) = 1);

它自己运行良好(大约 1 秒,大约 150.000 条记录)。

但是,如果我截断表然后重新插入记录:

truncate table sv_konginfo;

insert into sv_konginfo (kong_nr)
select distinct kong_nr
from sv_darlehen;

更新语句在处理完全相同的数据时运行速度非常慢(超过一分钟)。

我可以做些什么来提高第二种情况下的性能? (我们使用的是 Oracle 数据库 10g 企业版 10.2.0.3.0 - 64 位。)

最佳答案

感谢您的意见,他们帮助我找出了问题的原因:Chained Rows!

  • 在插入新行 AnzDarl(以及许多其他列)后为空
  • 当列设置为 1(或其他值)时,它们占用更多空间

我能够使用以下 SQL 进行检查:

select chain_cnt 
from user_tables
where table_name='SV_KONGINFO';

Truncate 后,chain_cnt 为 0。运行 Update 后,chain_cnt 急剧增加,等于受影响的行数。

像这样增加 PCT_FREE 解决了我的性能问题:

alter table sv_konginfo pctfree 40;

再次感谢您的意见,他们帮助排除了一些潜在的问题,直到最终链接的行出现在我的脑海中。

关于sql - 截断后更新缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2020231/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com