php程序员技术博客,关注PHP

专注于PHP技术

原创 mysql随机记录条数查询的优化

一般的简单的获取随机几条数据的sql语句可能是这样

SELECT * FROM table WHERE 1 ORDER BY RAND() LIMIT N;

当数据库记录总数比较少的时候,这种方式还是不慢的,然而到一个级别后,比如10万
这个时候就非常的慢了,需要优化

SELECT a.* FROM TABLE AS a JOIN (SELECT MAX( id ) AS bid FROM TABLE) AS b ON (a.id >= FLOOR(b.bid*RAND())) WHERE 1 LIMIT N

从表中取出最大的id,RAND() 产生的是一个0到1.0的随机浮点数

标签: ,

这篇文章发布于 2011年11月9日,星期三,11:43,归类于 mysql, php。 您可以跟踪这篇文章的评论通过 RSS 2.0 feed。 您可以留下评论,或者从您的站点trackback

« »

留下回复

李立全
李立全
来自湖南-宁远,现就职于广东-广州,
职业PHP程序员,Q  Q1504-967,
MSNlee#dayanmei.com.

日志列表

php程序员技术博客,关注PHP由 WordPress 驱动