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

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

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

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

回答
編輯回答
痞性

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

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

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

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

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

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