Oracle

如何排除閃回查詢結果集中未更改的欄位?

  • October 3, 2020

是否可以排除閃回查詢結果集中未更改的欄位?

考慮我有下表

create table first_table
(
   id int generated as identity,
   name NVARCHAR2(1024),
   age smallint,
   notebook nclob,
   userpic clob,
   salary float
)

如果表在版本化查詢之後有非常頻繁的更新(例如在notebook欄位上)

select ROWID, VERSIONS_OPERATION, VERSIONS_STARTSCN, VERSIONS_STARTTIME, VERSIONS_XID, id, name, age, notebook, userpic, salary
from FIRST_TABLE versions between scn 1469193 and 1482882;

即使它是相同的,也會為每一行提取大量的 userpic 值。

我可以以某種方式避免這種情況,而是為未更改的值獲取 NULL 嗎?

有沒有辦法從版本化響應中排除未更改的欄位?

並不真地。

閃回使用UNDO. 閃回數據存檔將日誌文件的結果儲存在表中。

因此,當您執行閃回查詢時,您將獲得所有數據。

常用的方法是使用LAG+ DECODE。但是,恐怕這會給您的LOB專欄帶來問題。

就個人而言,我會將問題交給 UI(顯示層)。

引用自:https://dba.stackexchange.com/questions/276464