我一直在使用 order by rand(),但它越来越成为一个瓶颈。
我试过了
SELECT id
FROM users
JOIN (
SELECT CEIL( RAND( ) * ( SELECT MAX( id ) FROM users ) ) AS id
) AS r2
USING ( id )
如果所有的 id 都递增,它会起作用,但是对于这个特定的表,它们不是。 ID 本身是相当随机的。
谁有更好的方法?谢谢!
最佳答案
也许创建另一个表并以紧凑的方式将所有 id 放在那里,添加 id int autoincrement?如果您经常使用此功能,新表将物有所值。
关于database - 从数据库中获取随机记录的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3624759/