GORM First() 和 MySQL 5.6 共同使用造成的慢查询问题

   2 min read

因为在公司业务中遇到了这个问题,所以写了这篇博客来记录出现问题的原因和修复方法。

MySQL Logo

原因

MySQL 5.6 在使用有 ORDER BYLIMIT 语句的查询时,如果数据不够 LIMIT,就会直接全索引扫描。

而 GORM 的 First() 方法也会嵌入这两种语句,如:SELECT * FROM users ORDER BY id LIMIT 1;

这样就造成了比较难排查的慢查询问题。

修复

参考链接

MySQL Bugs: #78993: Optimizer use index scan instead of range scan by mistake

查询