Rails Rails 5.0 与 Rails 5.1、Rails 5.2 关于 User.all 查询的疑问

lengcb · August 20, 2018 · Last by msg7086 replied at August 23, 2018 · 2058 hits

之前一直用 rails5.1 版本,平时查询时候,看 log 时也没怎么在意。最近接手了一个 rails5.0 版本的项目,里面有 8 万条用户数据,我在升级 rails5.2 时注意到了一个问题。在 console 中执行 User.all 查询时,显示的 sql 语句。

rails5.2

SELECT  "users".* FROM "users" LIMIT $1  [["LIMIT", 11]]

rails5.1

SELECT  `users`.* FROM `users` LIMIT 11

rails5.0

SELECT "users".* FROM "users"

查询效率上有上百倍的差距,我不明白 rails5.1、rails5.2 中这个 limit11 是哪里来的?

Rails 5.1.4 MySQL 没遇到 LIMIT 11Rails 5.2.1 PG 有LIMIT 11`

Reply to pathbox

我在 rails5.1.6 的 mysql 中遇到过 limit11,这个还跟数据库有关吗?在 rails5.0 的 pg 中没有 limit11,在 rails5.2.1 的 pg 中有 limit11

Reply to coderliu

谢谢!

Reply to lengcb

不客气,我也是看了你的帖子去查了下才知道在 Console 下有这个特性😆

这个 hardcoded 11 真是看了难受

Reply to nouse

因为 inspect 返回 10 条记录吧,所以多读一条。不过的确是做个什么常量比较好。

You need to Sign in before reply, if you don't have an account, please Sign up first.