鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)/ 近千萬(wàn)級(jí)數(shù)據(jù),mysql如何寫“按字段條件”隨機(jī)的語(yǔ)句呢?

近千萬(wàn)級(jí)數(shù)據(jù),mysql如何寫“按字段條件”隨機(jī)的語(yǔ)句呢?

現(xiàn)有個(gè)表800W數(shù)據(jù),每天增加幾十萬(wàn)數(shù)據(jù)~

若只按field1=0,隨機(jī)取若干條表數(shù)據(jù),怎么寫語(yǔ)句優(yōu)化的快呢~

回答
編輯回答
痞性

field1做索引,常用的數(shù)據(jù)做Redis緩存。

2017年10月15日 12:45
編輯回答
茍活

數(shù)據(jù)庫(kù)隨機(jī),必然是臨時(shí)表文件排序。

如果對(duì)隨機(jī)的要求不高,可以采用隨機(jī)偏移的方式(limit offset,nums, 隨機(jī)offset,讓每次從不同的位置開(kāi)始),這種方式記錄還是有序的,只是每次結(jié)果的偏移位置不一樣。

如果要足夠隨機(jī),就自己先冗余一下:

  1. 將field1=0的數(shù)據(jù)冗余出來(lái),存為一張新表
  2. 使用隨機(jī)函數(shù)生成1-新表最大ID的若干隨機(jī)數(shù)。
  3. 在新表中用 where id in(xxx)的方式獲取
2017年4月5日 00:53