首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

MySQL随机取数据最高效的方法

2012-07-03 
MySQL随机取数据最高效率的方法发现在SQL语句里有一个 ORDER BY rand() 这样的一个语句,这个说是用着方便,

MySQL随机取数据最高效率的方法

发现在SQL语句里有一个 ORDER BY rand() 这样的一个语句,这个说是用着方便,但是效率实在是太低了,于是我用了以下的方法来优化,就是用JOIN表的方法来达到这个取随机数据行的方法,你可以用 EXPLAIN SQL语句来分析一下以下两条SQL语句的效率,当然,数据量至少上10万以上才能看出性能。

?

[1]普通方法, 效率太低

?

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

?

[2] JOIN的方法:

?

SELECT *?

FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`) – (SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`)) AS id) AS t2?

WHERE t1.id >= t2.id?

ORDER BY t1.id LIMIT 10;

?

热点排行