本文介紹了MySQL 快速從 600K 行中隨機選擇 10 行的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
如何最好地編寫從總共 600k 行中隨機選擇 10 行的查詢?
How can I best write a query that selects 10 rows randomly from a total of 600k?
推薦答案
處理多種情況的好帖子,從簡單到間隙,再到非均勻間隙.
A great post handling several cases, from simple, to gaps, to non-uniform with gaps.
http://jan.kneschke.de/projects/mysql/order-by-rand/
對于大多數一般情況,您的操作方法如下:
For most general case, here is how you do it:
SELECT name
FROM random AS r1 JOIN
(SELECT CEIL(RAND() *
(SELECT MAX(id)
FROM random)) AS id)
AS r2
WHERE r1.id >= r2.id
ORDER BY r1.id ASC
LIMIT 1
這里假設 id 的分布是相等的,并且 id 列表中可以有間隙.更高級的例子見文章
This supposes that the distribution of ids is equal, and that there can be gaps in the id list. See the article for more advanced examples
這篇關于MySQL 快速從 600K 行中隨機選擇 10 行的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!
【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!