PHP试题网_中国最大的免费网络PHP试题测试平台,PHP试卷调查,PHP试卷模板、PHP考试测验

通常数据量少的时候我们会这样写:

SELECT * FROM _article ORDER BY RAND() LIMIT 10

在1千条数据内,效果还行,但是,随着数据量慢慢增多,上了5万条数据的时候,上面的写法会导致数据库性能急剧下降。

现在数据量为:

我们来看下上面的随机取数据所消耗的时间:

我的天呐,这样取数据,数据库会让你给搞爆的。

我们来看下大牛怎样写:

SELECT * FROM _article AS r1 JOIN
 (SELECT CEIL(RAND() * (SELECT MAX(article_id) FROM  _article)) AS article_id) AS r2
 WHERE r1.article_id >= r2.article_id
 ORDER BY r1.article_id ASC
 LIMIT 10

 


作者:OK兄 浏览次数:52

登 录