首页 新闻 搜索 专区 学院

表递增ID做数据迁移,查询效率问题。

0
悬赏园豆:10 [待解决问题]

数据表描述:一张生产表, 数据量在 150W条数据,但是ID 递增已经到了 3000W了,因为中间一致被人DELETE 数据,但是ID一致在递增。现在就形成了 ID 1-50000是没有的, 50000-100000是在表里面的,后面也是这种断断续续的存在和不存在,但是数据递增还是3000W往后。
问题描述:查询效率特别低下,做数据迁移,已经将150W条数据 压缩到 10W条数据,但是效率还是低下,CPU使用率特别高。多个子系统使用 SELECT * FROM TABLE 语句。
结果猜测:SELECT *FROM 这种查询默认表里面 还是 3000W+ 数据 并不是实际 10W条数据,有没有什么好的方案 对这种生产库的表 做数据迁移?

KainJC的主页 KainJC | 初学一级 | 园豆:60
提问于:2021-02-22 12:26
< >
分享
所有回答(3)
0

解决现有数据方法:把表数据全盘导出本地,移除ID列。重新insert生成一遍(要保证该ID号 没有被其他表所关联。否则这么整 就乱套了);

解决后续新插入数据:改逻辑。弃用自增,新建列、使用自定义生成序列号。记得加索引

同 期待他人更好的方案

Ctrl` | 园豆:2895 (老鸟四级) | 2021-02-22 14:28
0

不要select * from
建索引啥的
把这个表数据备份的其他表中,然后做个映射以保存老数据?
表分区啥的
id不要数字
我不是干数据库的,但是我见大佬这么做过

小草上飞飞 | 园豆:228 (菜鸟二级) | 2021-02-22 15:48
0

如果你的ID是主键,就算中间缺了是不会影响查询效率的,最多影响的是插入的时候,需要重建B树,有点影响,
稳定以后,根本不会对查询效率有影响

不知道风往哪儿吹 | 园豆:1364 (小虾三级) | 2021-02-23 10:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册