该表有如下所示的信息,表中大约有20列,我只想知道从一行随机获取所有列数据的最快方法是什么。我知道有一个“ORDER BY RAND()”,但是我读到它使用起来很慢,而且我担心这可能会导致问题,所以我担心会有其他的选择。我将在MySQL中使用InnoDB,但如果可以使用替代数据库引擎更有效地选择随机行,则可以改变这种情况。该网站将使用PHP(潜在的RubyOnRails)进行编码,数据库将从一个将刮除汽车信息网站的Python中填充。
这就是我如何从分布均匀的表中选择随机行的方法。SELECT * FROM foo OFFSET floor( random() * ( SELECT COUNT(*) FROM foo ) ) ORDER BY bar LIMIT 1;SELECT * FROM foo OFFSET floor( $1 * ( SELECT COUNT(*) FROM foo ) ) ORDER BY bar <