如何高效修改大表id列?

现在有个5kw的测试表,要将原来乱序的id列修改成递增数字,有好办法吗?

1 个赞

表 dumpling 备份出来 手动修改表结构为自增的,然后 lighting 导入 tidb。表相当于重建了。

手动无法清理掉id列数据啊

5000KW要是数据行不长
直接create 新表,id用自增,然后insert into select from 旧表
tidb_mem_quota_query 可以在session级别调整到10G应该够了

把ID删了就清理掉了啊 :joy_cat:

1 个赞

先删除ID列,然后添加ID列自增试试

是id列改成自增列,还是现有id列的值改成递增数字?

如果是聚簇表,id自增必须是主键列,主键列不允许修改

可以试试下面的方式:

  1. 在原表上删除id 列

  2. dumpling导出整个表,因为id 列没有了,所有不含id 列数据

  • 这里有个问题,目前不支持删除主键列或组合索引相关列。得要先删除索引,如果是聚簇索引也不支持删除。如果可以删除,继续下面的步骤。
  • 如果不行的话,重建表和导入数据吧。
  1. 在导出的文件中修改scheme文件,给新的表添加自增id 列。注意这里要使用MySQL兼容模式,不然拿到的id 可能是唯一但不是严格递增的。
  1. lightning导入数据

etl临时倒腾一下就行,5kw数据不多。

重建吧

重建吧

这个兼容模式是真的香~

这个可以

重建下吧

create建一个id自增的表,数据倒回来?5kw也不多