为何MySQL中使用order by random_bytes(8)无排序效果?
MySQL 8.0.23中ORDER BY random_bytes(8)无法随机排序的问题及解决方案
问题现象
在AWS Serverless v2环境的MySQL 8.0.23版本中,执行带有ORDER BY random_bytes(8)的查询时,结果始终保持插入顺序(例如固定返回1、2、3、4、5),完全达不到随机排序的预期效果。
测试验证
- 创建存储过程
Test,生成临时表Meow并插入测试数据,执行SELECT * FROM Meow ORDER BY random_bytes(8),结果始终有序 - 尝试优化写法:将
random_bytes(8)放入子查询、转换为十六进制字符串后排序,结果仍无变化 - 对比测试:使用
ORDER BY Id DESC可正常返回逆序结果,且临时表与普通表的表现完全一致
问题原因
这是MySQL优化器的已知bug,官方编号为111252,该问题仅存在于8.0.34之前的部分版本(如8.0.23)。
解决方案
将MySQL版本升级至8.0.34及以上,官方已在该版本中修复此bug。
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

