gpt4 book ai didi

database - 使用相同值更新主键时的性能影响

转载 作者:搜寻专家 更新时间:2023-10-30 20:49:42 24 4
gpt4 key购买 nike

在工作中,我看到查询将使用相同的值更新表主键。这是一个例子。我这样做对数据库性能有什么影响 -

update t set id=1,content='ccc' 
where id=1;

我希望索引不会被修改,因为键值相同。但是我相信它会使用更多的资源,而不仅仅是更新内容列本身。我说得对吗?

Table t (id is primary key)
id content
1 xxx
2 yyy

最佳答案

是的,您说得对,索引不会被修改,因为主键(自然索引)列与其索引具有相同的值。

还有,这个更新

update t set id=1,content='ccc' 
where id=1;

更消耗资源
update t set content='ccc' 
where id=1;

因为更新索引列比更新非索引列慢。

Example follows ...

SQL> create table a ( b numeric, c varchar2(50) );
SQL> set timing on;
SQL> insert into a(b) select rownum from dual connect by level <= 1000000;
1000000 rows created.
Elapsed: 00:00:02.74

SQL> update a set c=ascii(b);
1000000 rows updated.
Elapsed: 00:00:46.72

SQL> commit;
Commit complete.
Elapsed: 00:00:00.03

SQL> truncate table a;
Table truncated.
Elapsed: 00:00:01.33

SQL> insert into a(b) select rownum from dual connect by level <= 1000000;
1000000 rows created.
Elapsed: 00:00:00.80

SQL> commit;
Commit complete.
Elapsed: 00:00:00.03

SQL> create index idx_c on a;
Index created.
Elapsed: 00:00:00.46

SQL> update a set c=ascii(b);
1000000 rows updated.
Elapsed: 00:01:53.12

SQL> commit;
Commit complete.
Elapsed: 00:00:00.04

关于database - 使用相同值更新主键时的性能影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46201582/

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