gpt4 book ai didi

oracle - 按 rowid 执行选择是否安全

转载 作者:行者123 更新时间:2023-12-02 11:44:56 33 4
gpt4 key购买 nike

我想知道使用 rowid 进行行匹配是否安全?

我有以下查询:

select * from a,
(select a.rowid rid, <some_columns_omitted> from a, b, c where a.some_column = b.some_column ... <joining_omitted>
union all
select a.rowid rid, <some_columns_omitted> from a, d, e where a.some_column = d.some_column ... <joining_omitted>
union all ....) sub_query
where a.rowid = sub_query.rid

使用rowid进行行匹配与使用主键一样安全吗?

最佳答案

请参阅此相关问题:

Oracle 保证,只要该行存在, its rowid does not change 。 Rowid 仅在非常特殊的情况下才会更改(表重建、启用行移动的分区表、更新 pk 的索引组织表)。在堆表上,更新不会导致 rowid 更改,即使行已迁移(因为它不再适合 block )。

在任何情况下,rowid 都是行元数据的一部分,并且在查询期间将保持一致,具有相同的 consistency mechanism保持列数据一致(多版本读取一致性...)。

此外,如果您锁定更新行(与主键相同),则在跨查询中使用 rowid 是安全的。通过 rowid 访问行也比主键查找更快(因为主键查找是索引扫描 + rowid 访问)。

关于oracle - 按 rowid 执行选择是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18618017/

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