performance - Oracle,更新语句如何工作

标签 performance oracle rowtype

问题1

谁能告诉我以下两个更新语句之间是否有任何区别:

UPDATE TABA SET COL1 = '123', COL2 = '456' WHERE TABA.PK = 1
UPDATE TABA SET COL1 = '123' WHERE TABA.PK = 1

其中 COL2 的原始值 = '456'

这对 UNDO 有何影响?

问题 2 如果我使用 ROWTYPE 更新表 TABA 中的记录(如以下代码片段所示)会怎么样? 性能如何?它如何影响 UNDO?

SampleRT TABA%rowtype

SELECT * INTO SampleRT FROM TABA WHERE PK = 1;
SampleRT.COL2 = '111';
UPDATE TABA SET ROW = SampleRT WHERE PK = SampleRT.PK;

谢谢

最佳答案

您的问题 1 是询问当您对行运行 UPDATE 但实际上并未更改值时是否会生成 UNDO(和 REDO)吗?

类似的东西?

update taba set col2='456' where col2='456';

如果这是问题所在,那么答案是,即使您将列更新为相同的值,也会生成 UNDO(和 REDO)。

(异常(exception)情况是当您将 NULL 列更新为 NULL 时 - 这不会生成任何 REDO)。

关于performance - Oracle,更新语句如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1670842/

相关文章:

c# - wpf(太多绘图视觉效果)导致抖动平移和缩放

java - Oracle11g安装监听器错误

oracle - pl/sql中如何选择行表数据

postgresql - 使用 %ROWTYPE 在 postgres 函数中循环数据时出现问题

performance - OpenMP 通过三重 for 循环并行化矩阵乘法(性能问题)

mongodb - 如何提高 MongoDB 聚合查询的性能?

MongoDB 中索引数据类型的性能影响?

database - 如何删除表中在特定时间窗口之间创建的记录?

oracle - 行数与 oracle 中的类似查询不匹配

oracle - 如何声明弱类型 SYS_REFCURSOR 变量的 %ROWTYPE?