一亿行的 MySQL 表,主键 ID 不连续,怎样随机取 30 行速度最快?

2021-02-19 11:35:17 +08:00
 kisshere

ORDER BY rand()速度太慢,主键又不连续(类似于 1,6,7,33,78,93 这种递增),要不然都可以用 php 生成 30 个随机数 id 去 query 了

5690 次点击
所在节点    程序员
46 条回复
akira
2021-02-19 22:27:48 +08:00
@fox0001 就算是动态数据,只要不是动态的太厉害,定时,例如每天,处理一下自增字段 应该没太大问题的
renmu123
2021-02-19 22:36:38 +08:00
搞点伪随机,数据量大了之后,谁也不知道你是真随机还是假随机了
bthulu
2021-02-20 11:06:27 +08:00
@akira 连续的自增字段怎么加, 你如何保证严格的连续性, 删除数据, 插入未提交等造成的不连续你怎么处理
ckdxc
2021-02-20 11:21:14 +08:00
随机行号,行不? 感觉不需要随机 id, round(count), 30 个行号必命中
wakzz
2021-02-20 15:09:35 +08:00
先看看业务,是不是必须要真随机。有很多业务实际上压根不需要真随机,搞个差一点的伪随机就够用了
akira
2021-02-20 23:08:56 +08:00
@bthulu 不需要严格保证的连续性呀

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/754193

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX