原帖由 wm_chief 于 2010-12-27 11:29:34 发表
看不少人喜欢用ORDER BY RAND()随机调用,随机调用是最耗资源的一种调用方式,信息数在1万以上随机调用就开始影响速度。使用时... |
这里我说一下哈,随机到得到的ID,如果不连续的怎么办?
假如现在,ID有:1,2,3,4,5 昨天我删除一个ID为4的文章,今天随机1到5之间的ID,如果随机到4那不就少调用一条了吗?所在我建议随机大于调用的顺,然后用mysql limit
<?php $maxrs=$empire->fetch1("select max(id) from phome_ecms_enews limit 1"); //找出数据表中最大ID $minrs=$empire->fetch1("select min(id) from phome_ecms_enews limit 1"); //找出数据表中最小ID //然后找出100个随机ID,范围在最大ID与最小ID之间,100可以依据你要显示的条数自己设的,100肯定要大于你要查询的条数,因为1,可能在1-100中的ID是不连续的2,rand可能会产生两个一样的 for($i=0;$i<100;$i++){ if($randid){ $douhao=','; //多个ID用逗号分开 加个判断是为了不让逗号出现在最前面或最后面,不然mysql in语法会出错 } $randid=$randid.$douhao.rand($minrs[id],$maxrs[id]); } ?> [ecmsinfo]"select * from phome_ecms_enews where id in($randid)",....[/ecmsinfo]
|