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

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;

?

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

相关文章:

你感兴趣的文章:

标签云: