暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

以下关于ROWID和ROWNUM的说法

原创 小伙 2025-05-25
74

问题描述

以下关于ROWID和ROWNUM的说法,错误的是?(单选)
A. ROWID是物理地址,用于定位数据存储位置
B. ROWNUM表示查询结果的行号,随排序条件变化
C. ROWID在数据删除后会被其他数据覆盖复用
D. ROWNUM在WHERE条件筛选前生成

ROWID和ROWNUM的本质区别
ROWID是数据的“身份证号”

ROWID是Oracle为每行数据生成的唯一物理地址,包含数据文件号、块号、行号等信息,用于快速定位数据存储位置。即使数据被删除,原ROWID也不会被新数据直接覆盖(除非新数据插入同一物理位置)。

应用场景:根据ROWID快速更新或删除特定行,例如:

      UPDATE employees SET salary = 10000 WHERE ROWID = 'AAASe9AABAAAAMUAAA';  
   

ROWNUM是结果的“临时编号”

ROWNUM是逻辑行号,在数据筛选后、排序前按查询结果的输出顺序生成。若使用ORDER BY,ROWNUM会因排序结果变化而改变。

典型误区:

      -- 错误!ROWNUM在WHERE之后生成,无法直接取第5-10行  
 SELECT  FROM (SELECT  FROM employees) WHERE ROWNUM BETWEEN 5 AND 10;  
 -- 正确写法需嵌套子查询  
 SELECT  FROM (SELECT e., ROWNUM rn FROM employees e) WHERE rn BETWEEN 5 AND 10;  
   

选项C为什么错误?

ROWID对应的是物理存储位置,即使数据被删除,该位置可能暂时空闲,但ROWID本身不会被其他数据“复用”,除非新数据恰好插入到同一位置(通常由存储机制决定,而非主动覆盖)。

实战技巧
性能优化:用ROWID替代全表扫描,例如通过索引获取ROWID后精准定位数据。

分页陷阱:ROWNUM分页必须嵌套子查询,否则排序会导致分页错乱。

调试工具:通过SELECT ROWID, t.* FROM table t查看数据的物理存储分布。

📚 今日知识点总结
特性 ROWID ROWNUM
性质 物理地址(唯一不变) 逻辑行号(动态变化)
生成时机 数据插入时确定 查询结果筛选后生成
使用场景 精准数据操作、性能优化 分页查询、结果限制

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论