MySQL中如何优化OrderBy随机排序性能?Rand函数执行流开销分析。
- 内容介绍
- 文章标签
- 相关推荐
本文共计862个文字,预计阅读时间需要4分钟。
MySQL中,使用`ORDER BY RAND()`的处理方式是:
常见错误现象:SELECT * FROM users ORDER BY RAND() LIMIT 10 在 50 万行表上从 20ms 涨到 8s;慢查询日志里反复出现;并发稍高就触发 max_execution_time 超时或被 kill。
用主键范围 WHERE 替代 ORDER BY RAND()
前提是表有自增/有序整型主键(如 id),且空洞率不高(删过少量记录不算严重)。核心是绕过排序,靠主键索引直接定位。
本文共计862个文字,预计阅读时间需要4分钟。
MySQL中,使用`ORDER BY RAND()`的处理方式是:
常见错误现象:SELECT * FROM users ORDER BY RAND() LIMIT 10 在 50 万行表上从 20ms 涨到 8s;慢查询日志里反复出现;并发稍高就触发 max_execution_time 超时或被 kill。
用主键范围 WHERE 替代 ORDER BY RAND()
前提是表有自增/有序整型主键(如 id),且空洞率不高(删过少量记录不算严重)。核心是绕过排序,靠主键索引直接定位。

