近千万级数据,mysql如何写“按字段条件”随机的语句呢?

现有个表800W数据,每天增加几十万数据~

若只按field1=0,随机取若干条表数据,怎么写语句优化的快呢~

阅读 2.7k
2 个回答

数据库随机,必然是临时表文件排序。

如果对随机的要求不高,可以采用随机偏移的方式(limit offset,nums, 随机offset,让每次从不同的位置开始),这种方式记录还是有序的,只是每次结果的偏移位置不一样。

如果要足够随机,就自己先冗余一下:

  1. 将field1=0的数据冗余出来,存为一张新表
  2. 使用随机函数生成1-新表最大ID的若干随机数。
  3. 在新表中用 where id in(xxx)的方式获取

field1做索引,常用的数据做Redis缓存。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题