在 SELECT 语句中使用 Rowid 值

数据库服务器将唯一的 rowid 指定给未分片的表中的行。实际上,rowid 是每个表中的隐藏列。rowid 的顺序值没有任何特殊意义,可能根据 chunk 中的物理数据的位置的不同而变化。可以使用 rowid 来找到与表中的某行相关联的内部记录号。分片表中的行不自动包含 rowid 列。

建议您在应用程序中使用主键而不是 rowid 作为访问的方法。因为主键是用 SQL 的 ANSI 规范定义的,所以使用它们来访问数据提高了应用程序的可移植性。另外,当数据库服务器使用主键时,它访问分片表中的数据所需的时间比使用rowid 时访问相同数据所需的时间要要少。

有关 rowid 的更多信息,请参阅 GBase 8s 数据库设计和实现指南GBase 8s 管理员指南

下列查询在 Projection 子句中使用 rowid 和星号(*)来检索 manufact 表中的每一行及其相应的 rowid。

图: 查询

SELECT rowid, * FROM manufact;

图: 查询结果

rowid manu_code manu_name       lead_time 
          
          257 SMT       Smith              3
          258 ANZ       Anza               5
          259 NRG       Norge              7
          260 HSK       Husky              5
          261 HRO       Hero               4
          262 SHM       Shimara           30
          263 KAR       Karsten           21
          264 NKL       Nikolus            8
          265 PRC       ProCycle           9

不要在 permanent 表中存储 rowid 或尝试将它用作外键。如果删除了一个表然后从外部数据重新装入它,那么所有 rowid 都将不同。