MySQL 的 ORDER BY RAND() 函数如何运行
MySQL 的 ORDER BY RAND() 函数生成看似随机的结果,但其实际机制有所不同来自普遍持有的信念。与假设相反,MySQL 没有添加影响排序的随机值列。相反,它采用以下过程:
意外的执行时间
提供的测试查询展示了意外的执行时间:
Query | Execution Time |
---|---|
SELECT * FROM table ORDER BY RAND() LIMIT 1 | 30-40 seconds |
SELECT id FROM table ORDER BY RAND() LIMIT 1 | 0.25 seconds |
SELECT id, username FROM table ORDER BY RAND() LIMIT 1 | 90 seconds |
执行时间的这种变化归因于每个查询检索的不同数据。与仅检索特定列 (id) 或获取已索引的数据 (id) 相比,选择整行 (*) 会产生更高的成本。
快速随机选择的替代方法
虽然 ORDER BY RAND() 可能无法提供最佳性能,但替代方法可以提供更快的结果:
以上是MySQL 的 ORDER BY RAND() 函数实际上是如何工作的?的详细内容。更多信息请关注PHP中文网其他相关文章!