理解 MySQL 的 ORDER BY RAND() 机制
为了优化 MySQL 中的随机选择,必须掌握其内部工作原理ORDER BY RAND() 函数。与常见的误解相反,MySQL 不会向表中引入随机列并基于它进行排序。
快速随机选择的替代方法
Jay 的解决方案,其中涉及加入子查询,仍然是最快的方法,显着优于传统的 ORDER BY RAND() 查询。
执行时间的意外变化
但是,在比较时出现了一个奇怪的观察结果ORDER BY RAND() 查询中不同列组合的执行时间:
理解方差
这种差异可归因于索引和数据检索。像 id 这样的列通常会建立索引,从而可以更快地访问它们。相比之下,诸如用户名之类的附加列会在检索和处理非索引数据时引入开销。
优化性能
对于单行随机选择,Jay 的解决方案仍然是首选。但是,如果需要多个随机行,基于过程的方法(例如德国博主建议的方法)可以提供更有效的替代方案。
虽然没有真正“快速”的 ORDER BY RAND( )在 MySQL 中的操作,了解其细微差别并探索替代方法可以显着提高需要随机数据检索的场景中的性能。
以上是MySQL 的 ORDER BY RAND() 函数到底如何工作?的详细内容。更多信息请关注PHP中文网其他相关文章!