SELECT * FROM doc_content ORDER BY rand( ) LIMIT 10;
不知道数据量比较大时的效率如何。
更新:今天看到这篇里有大数据量时取随机数据的 SQL 语句,比直接用 RAND() 的效率高:
SELECT *由于有子查询,需要 MySQL 4.1以后的版本。下面是它的效率测试:
FROM doc_content AS r1 JOIN
(SELECT ROUND(RAND() *
(SELECT MAX(doc_id)
FROM doc_content)) AS doc_id)
AS r2
WHERE r1.doc_id >= r2.doc_id
ORDER BY r1.doc_id ASC
LIMIT 1;
100 1.000 10.000 100.000 1.000.000
Q1 0:00.718s 0:02.092s 0:18.684s 2:59.081s 58:20.000s
Q3 0:00.570s 0:00.607s 0:00.614s 0:00.628s 0:00.637s