_tidb_rowid 列有索引吗

【 TiDB 使用环境】生产环境
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】

备份时候发现如下语句,想咨询一下这个_tidb_rowid有索引吗

SELECT * FROM dbname.w_packet WHERE create_date_time > ‘2022-01-01 00:00:00’ ORDER BY _tidb_rowid

w_packet这个表结构发一下

这个_tidb_rowid是tidb内部字段啊,表信息如下:

CREATE TABLE w_packet (
id char(64) NOT NULL COMMENT ‘主键ID’,
status varchar(10) NOT NULL COMMENT ‘状态’,
create_date_time datetime NOT NULL COMMENT ‘创建时间’,
complete_date_time datetime DEFAULT NULL COMMENT ‘完成时间’,
final_date_time datetime DEFAULT NULL COMMENT ‘最终完成时间’,
serial_number varchar(64) DEFAULT NULL COMMENT ‘序列号’,
is_delete varchar(10) DEFAULT ‘0’ COMMENT ‘是否删除’,
summary varchar(256) DEFAULT NULL COMMENT ‘摘要’,
sys_update_data_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘系统更新时间’,
PRIMARY KEY (id),
KEY idx_w_packet_create_date_time (create_date_time),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin

非聚簇表,也没有整形主键的情况下,_tidb_rowid 隐藏列就是主键。也就是索引。

1 个赞

对啊,在你创建一个没有主键或者主键非数字类型的表的时候,就会生成这个字段,这个字段类似于oracle的rowid,对应的就是tikv上的key,上面也会创建一个相应的主键索引。

1 个赞

感谢回复

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。