mysql一次性獲取幾十萬資料_mysql隨機獲取一條或者多條資料
阿新 • • 發佈:2020-12-10
技術標籤:mysql一次性獲取幾十萬資料mysql隨機獲取十條oracle多條資料合併成一條oracle獲取時間最大的一條資料
mysql隨機獲取一條或者多條資料 - osc_rm0mt9zx的個人空間 - OSCHINA - 中文開源技術交流社群my.oschina.net網上的方案都不是很靠譜
select * from users order by rand() LIMIT 1 SELECT * FROM users AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(userId) FROM `users`)-(SELECT MIN(userId) FROM users))+(SELECT MIN(userId) FROM users)) AS userId) AS t2 WHERE t1.userId >= t2.userId ORDER BY t1.userId LIMIT 1 SELECT * FROM users WHERE userId >= ((SELECT MAX(userId) FROM users)-(SELECT MIN(userId) FROM users)) * RAND() + (SELECT MIN(userId) FROM users) LIMIT 1
首先我們分析一下業務訴求
是真的需要完全隨機還是需要每次都拿到不同的記錄,如果是完全隨機就有可能出現重複的記錄,同一時間執行SQL的使用者拿到的資料有可能相同
如果是為了保證在併發情況和長時間上不頻繁出現重複,則應考慮的方案為:
一、把已有的記錄加入佇列,每次新請求從佇列獲取一條,佇列為空時重新追加
好處是記錄數量較少、請求量較少時保證了一段時間內不重複,但可能出現穩定的重複規律