从mySQL获取随机行的最快方法

从mySQL获取随机行的最快方法,mysql,random,Mysql,Random,我有一个InnoDB表,有数百万条记录。我需要尽快找到获取随机行的方法 我的解决方案1是: 我的解决方案2是: 所以,解决方案#2的速度太快了,但它由两个查询组成。 是否有一种方法可以在一个请求中完成此操作?这似乎非常昂贵。按兰德公司订购()会使服务器崩溃。这是我所知道的最慢的方法。看看这个问题:这可能会非常昂贵。ORDER BY RAND()将摧毁服务器。这是我知道的最慢的方法。看看这个问题: SELECT * FROM keywords T JOIN (SELECT FLOOR(MAX(ki

我有一个InnoDB表,有数百万条记录。我需要尽快找到获取随机行的方法

我的解决方案1是:

我的解决方案2是:

所以,解决方案#2的速度太快了,但它由两个查询组成。
是否有一种方法可以在一个请求中完成此操作?

这似乎非常昂贵。按兰德公司订购()会使服务器崩溃。这是我所知道的最慢的方法。看看这个问题:这可能会非常昂贵。ORDER BY RAND()将摧毁服务器。这是我知道的最慢的方法。看看这个问题:
SELECT * FROM keywords T JOIN (SELECT FLOOR(MAX(kid)*RAND()) AS ID) AS x ON T.kid >= x.ID ORDER BY T.kid ASC LIMIT 1
$max = SELECT max(kid) FROM keywords
SELECT * FROM keywords T JOIN (SELECT FLOOR($max*RAND()) AS ID) AS x ON T.kid >= x.ID ORDER BY T.kid ASC LIMIT 1