database - 从数据库中获取随机记录的最快方法

标签 database mysql

我一直在使用 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/

相关文章:

mysql - Knime 数据库编写器节点中的用户拒绝创建命令

mysql - 根据主表的一个属性将数据输入到具有外键关系的2个表中

mysql - 合并 CSV append header

mysql - 使用条件子句连接多个 MySQL 表

PHP/MYSQL错误: mysql_num_rows(): supplied argument is not a valid

java - 如何使用数据库在服务器端管理帖子、评论、喜欢和不喜欢?

mysql - Rails 是否在 mysql 数据库中设置任何内容?

php - 我应该使用哪个?项目::选择 ("*") 或 new Project()

php - 创建MySQL数据的备份

php - Codeigniter 访问回显表内的输入类型