MySql 随机读取数据

2009-04-14 14:31:20  |   才被阅读:2,585 次  |   要评论?
分类: MySQL优化设计  |   发布: OurMySQL  |   来源:牡丹网景
标签: , ,

一直以为mysql随机查询几条数据,就用

SELECT * FROM `table` ORDER BY RAND() LIMIT 5
就可以了。
但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上

继续阅读全文...

随机获取N条数据库记录的四个方法

2008-12-31 17:57:02  |   才被阅读:6,027 次  |   才6条评论
分类: MySQL优化设计  |   发布: OurMySQL  |   来源:mlsx.xplore.cn
标签: , ,

查阅其手册(MySQL),其中提到用order by rand() 和limit两结合来获取随机记录。另外google了一下,还发现了其他一些好的方法,特记录下来:

继续阅读全文...

MySQL Order By Rand()效率

2008-10-09 18:55:29  |   才被阅读:1,917 次  |   才1条评论
分类: MySQL初级应用  |   发布: OurMySQL  |   来源:PHPQ
标签: ,

本文详细解说了MySQL Order By Rand()效率优化的方案,并给出了是使用JOIN的语法来优化的思路过程,是篇不可多得的MySQL Order By Rand()效率美文。

继续阅读全文...

关于随机抽取order By Rand()的效率问题和改进写法!

2008-10-09 18:46:52  |   才被阅读:1,590 次  |   要评论?
分类: MySQL初级应用  |   发布: OurMySQL  |   来源:我爱PHP
标签: ,

最近由于需要大概研究了一下MYSQL的随机抽取实现方法。

举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是 SELECT * FROM tablename ORDER BY RAND() LIMIT 1

但是,后来我查了一下MYSQL的官方手册,里面针对RAND()有如下提示:

You can’t use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times. In MySQL Version 3.23, you can, however, do: SELECT * FROM table_name ORDER BY RAND()

大概意思就是,在ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描。但是在MYSQL 3.23版本中,仍然可以通过ORDER BY RAND()来实现随机。

继续阅读全文...