2005-08-09

随机取出数据

在mySQL需要从数据库的某个表中随机地取出 1 行数据或者多行数据,比如在网站首页的有个小板块随机显示 10 篇文章,可以用这个 SQL 语句:


SELECT * FROM doc_content ORDER BY rand( ) LIMIT 10;


测试数据表明,当有大数据量时使用下面的SQL语句比直接用 RAND() 的效率要高:





SELECT *
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;

没有评论:

发表评论