分享到:
发表于 2010-06-29 18:45:41 楼主 | |
今天要用到随机查询,就请教同事,告知用order by rand()。不过后来从网上搜了一下,据说这样用效率很低,因为rand()放在order by子句中会被执行多次。 以下是摘抄: SELECT * 但是这样会产生连续的5条记录。解决办法只能是每次查询一条,查询5次。即便如此也值得,因为15万条的表,查询只需要0.01秒不到。 下面的语句采用的是JOIN,mysql的星空(中国)上有人使用 SELECT * 我测试了一下,需要0.5秒,速度也不错,但是跟上面的语句还是有很大差距。总觉有什么地方不正常。 于是我把语句改写了一下。 SELECT * FROM `table` 这下,效率又提高了,查询时间只有0.01秒 最后,再把语句完善一下,加上MIN(id)的判断。我在最开始测试的时候,就是因为没有加上MIN(id)的判断,结果有一半的时间总是查询到表中的前面几行。 完整查询语句是: SELECT * FROM `table` 最后在php中对这两个语句进行分别查询10次, 前者花费时间 0.147433 秒 后者花费时间 0.015130 秒 看来采用JOIN的语法比直接在WHERE中使用函数效率还要高很多 原文:http://www.wzsky.net/html/Program/Mysql/103688.html |
|
楼主热贴
个性签名:无
|
发表于 2010-07-30 14:20:06 1楼 | |
顶你 | |
发表于 2010-08-03 15:37:56 2楼 | |
![]() |
|
针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员 、 查看帮助 或 给我提意见