0

从没有数字主键的100.000.000 条记录的表中提取 1000行随机行的最有效方法是什么?

使用ORDER BY RAND()被排除在外,因为效率非常低。

环顾我发现的最佳方法如下:

SELECT key FROM (
    SELECT @cnt := COUNT( * ) +1, @lim := 1000 FROM table
)vars STRAIGHT_JOIN (
    SELECT r . * , @lim := @lim -1
    FROM table r
    WHERE (
        @cnt := @cnt -1
    )
    AND RAND( ) < @lim / @cnt
)i

这是使用 MySQL 5 的最佳方法还是可以使用更有效的代码?

4

1 回答 1

-1

如果您只想获取前 1000 个条目(但您也可以声明偏移量),您应该查看 MySql 中的 Limit

http://dev.mysql.com/doc/refman/5.0/en/select.html

于 2013-10-17T09:20:30.360 回答