我有一个由连接组成的查询,其输出为about 30,000+ records。我想不使用SQL命令ORDER BY rand()从这些记录中随机获得10行。
我试着循环遍历这些记录,并将它们放入一个数组中,然后对它们进行混洗(得到混洗后的前10个),但它需要大约8-12秒才能生成。我想不惜一切代价减少这个处理时间。
我该如何做到这一点呢?
发布于 2013-03-15 23:03:20
好的,如果您不想使用RAND(),首先只选择id列,然后只选择您想要的10行
SELECT id FROM tableshuffle($idarray);中$ids=array_slice($idarray,0,10);
$sql="SELECT ... WHERE id IN (".implode(', ', $idarray).")";
Edit:这肯定比使用ORDER BY RAND()快得多!
https://stackoverflow.com/questions/15435560
复制相似问题