这是选择随机行的更好解决方案吗?

时间:2013-01-09 20:18:10

标签: mysql sql

我在mySQL标签中看到了一个很多的问题,关于如何从一个非常大的表中选择N个随机项目。大多数情况下,答案似乎归结为ORDER BY RAND() LIMIT N,但我认为这最终效率非常低,因为它必须为每一行生成一个随机数,然后根据此un重新排序结果集。 - 索引字段。

我的想法是做类似以下的事情:[用PHP-esque伪代码编写,但应该翻译成任何语言]

$rowcount = query("
    SELECT COUNT(*) FROM mytable WHERE [condition];
");
$rand_index = rand(0, $rowcount); // random int between 0 and $rowcount
$rand_row = query("
    SELECT field1, field2, ...
    FROM mytable WHERE [condition]
    LIMIT $rand_index, 1
");
// repeat last 2 lines as needed to get N rows.

这些查询是否应该比ORDER BY RAND() LIMIT N快得多,因为它们将使用所用表格中定义的索引?

0 个答案:

没有答案