从查询中获取10行


Get 10 rows from a query

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

我尝试遍历记录并将它们放入数组并洗牌(获得洗牌后的前10个)它们,但需要大约8-12秒才能生成。我愿意不惜一切代价缩短处理时间。

我该如何做到这一点?

如果你不想使用RAND()先快速选择id列然后只选择你想要的10行

  1. 选择id到$idarray
    SELECT id FROM table
  2. Shuffle和slice $idarray
    shuffle($idarray);
    $ids=array_slice($idarray,0,10);
  3. 选择完整的行
    $sql="SELECT ... WHERE id IN (".implode(', ', $idarray).")";

编辑:这肯定比使用ORDER BY RAND()快得多!