函数说明:ROWID 为行号函数,返回某行数据在 data 节点上的行号信息。
功能描述:ROWID 功能与主键类似,由 server 自动维护,不实际存储。
使用说明:实现了两种语法:伪列形式和函数形式(两种写法完全等价,不区分大小写)。其中,函数形式为 ROWID(表名)。
示例:
SELECT *, ROWID, ROWID(t1) FROM t1;
SELECT * FROM t1 WHERE ROWID = 1;
功能说明:
1)ROWID 返回类型为 BIGINT,从 0 开始排号;
2) ROWID 相当于 server 给表自动添加的伪列,可以查询及使用,由 server 自动维护,不实际存储,不需要也不允许用户进行管理(如修改或创建索引等);
3) ROWID 作为保留字使用,不允许使用 ROWID 作为任何数据对象的名称(不论大小写及是否有单撇);
4) DML 不会影响原有数据的 ROWID;
5) 性能方面,ROWID 与常量的简单比较,如...WHERE ROWID = 1,可以使用GBase 8a MPP Cluster 产品手册 5 数据库管理指南智能索引对 dc 进行过滤,支持的比较类型包括:>,>=,<,<=,=,<>,IS NULL,IS NOT NULL,BETWEEN,NOT BETWEEN;
6) 仅 Express 引擎支持 ROWID,其他引擎执行时(如含有 ROWID)会报错。
示例 1:ROWID,ROWID(t1)。
gbase> DROP TABLE IF EXISTS t1;
Query OK, 0 rows affected
gbase> CREATE TABLE t1(i int, j int);
Query OK, 0 rows affected
gbase> INSERT INTO t1 VALUES(2,1),(2,3),(2,3),(2,5),(3,2),(3,2),(3,2),(3,4),(3,1),(3,5);
Query OK, 10 rows affected
Records: 10 Duplicates: 0 Warnings: 0
gbase> SELECT *, ROWID, ROWID(t1) FROM t1;
+------+------+-------+-------+
| i | j | ROWID | rowid |
+------+------+-------+-------+
| 2 | 1 | 0 | 0 |
| 2 | 3 | 1 | 1 |
| 2 | 3 | 2 | 2 |
| 2 | 5 | 3 | 3 |
| 3 | 2 | 4 | 4 |
| 3 | 2 | 5 | 5 |
| 3 | 2 | 6 | 6 |
| 3 | 4 | 7 | 7 |
| 3 | 1 | 8 | 8 |
| 3 | 5 | 9 | 9 |
+------+------+-------+-------+
10 rows in set
示例 2:ROWID = 1
gbase> DROP TABLE IF EXISTS t1;
Query OK, 0 rows affected
gbase> CREATE TABLE t1(i int, j int);
Query OK, 0 rows affected
gbase> INSERT INTO t1 VALUES(2,1),(2,3),(2,3),(2,5),(3,2),(3,2),(3,2),(3,4),(3,1),(3,5);
Query OK, 10 rows affected
Records: 10 Duplicates: 0 Warnings: 0
gbase> SELECT * FROM t1 WHERE ROWID = 1;
+------+------+
| i | j |
+------+------+
| 2 | 3 |
+------+------+
1 row in set




