
崖山数据库的ROWID高度兼容Oracle语法是HEAP堆表的伪列代表行的物理存储地址同时也是一种原生数据类型。⚠️仅支持HEAP堆表列存表、分布式部署场景不支持ROWID伪列。视频讲解如下视频讲解如下【赵渝强老师】崖山数据库的行地址ROWID1. 基础概念伪列不在表的字段定义中select *不会返回必须显式写select rowid查询不能insert/update修改ROWID伪列。数据类型ROWID类型固定占16字节二进制UROWID通用ROWID变长1‑8000字节用来存ROWID二进制等价RAW类型。输出格式示例1350:5:0:148:0冒号分隔和Oracle的18位Base64字符串格式不一样。Oracle输出AAAW78AABAAAFWXAAABase64串YashanDB输出对象ID:文件号:段:块号:块内行号2. ROWID结构输出格式ObjectId:FileId:SegId:BlockId:SlotId片段含义ObjectId表对象IDFileId数据文件编号SegId段编号BlockId数据块号SlotId块内部行槽号行号配套包DBMS_ROWID提供函数解析rowid获取块号、文件号、行槽号用法和Oracle的DBMS_ROWID兼容分布式集群不可用。3. 核心特性仅HEAP堆表生效列存表、分布式表不能使用ROWID伪列单机/共享集群HEAP表可用。ROWID会变化的场景更新导致行迁移、行溢出ALTER TABLE MOVE、表重组、收缩删除后新插入行可能复用旧ROWID。同一张HEAP表内部ROWID唯一不同表ROWID可以重复不能跨表做对比。可以把ROWID作为普通字段类型建表时定义列类型为ROWID用来存储行地址Oracle不允许把ROWID作为字段类型这是一个重要差异。MySQL兼容模式下伪列别名是__ysmy_rowidOracle模式直接使用ROWID关键字。4. 常用SQL示例-- 查询rowid伪列Oracle兼容模式SQLselectrowid,deptno,dnamefromdept;ROWID DEPTNO DNAME-------------------------------------------- ------------ -------------2821:4:0:132:010ACCOUNTING2821:4:0:132:120RESEARCH2821:4:0:132:230SALES2821:4:0:132:340OPERATIONS4rowsfetched.-- 根据rowid快速定位行查询性能极高SQLselectdeptno,dnamefromdeptwhererowid2821:4:0:132:2;DEPTNO DNAME------------ -------------30SALES1rowfetched.