从查询中获取10行

时间:2013-03-15 14:58:53

标签: php mysql arrays

我有一个由连接组成的查询,并且输出大约有30,000多条记录。我想从这些记录中获取10个随机行,而不使用SQL命令ORDER BY rand()。

我尝试在记录中循环并将它们放入一个数组并随机播放(在洗牌后获得第1个10),但生成需要大约8-12秒。我想不惜一切代价减少这个处理时间。

我将如何做到这一点?

1 个答案:

答案 0 :(得分:8)

好的,如果您不想使用RAND(),请先选择更快的id列,然后再选择您想要的10行

  1. 在$ idarray中选择ID
    SELECT id FROM table
  2. Shuffle and slice $ idarray
    shuffle($idarray);
    $ids=array_slice($idarray,0,10);
  3. 选择完整的行
    $sql="SELECT ... WHERE id IN (".implode(', ', $idarray).")";
  4. 编辑:这肯定比使用ORDER BY RAND()快得多!