首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何显示在Rails控制台中运行的SQL查询?

如何显示在Rails控制台中运行的SQL查询?
EN

Stack Overflow用户
提问于 2010-05-30 01:37:02
回答 6查看 86.7K关注 0票数 138

当我在控制台中运行查询(例如MyModel.where(...)record.associated_things)时,我如何才能看到正在运行的实际数据库查询,以便更好地了解发生了什么?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-05-30 01:44:30

Rails 3+

在控制台中输入以下行:

代码语言:javascript
复制
ActiveRecord::Base.logger = Logger.new(STDOUT)

Rails 2

在控制台中输入以下行:

代码语言:javascript
复制
ActiveRecord::Base.connection.instance_variable_set :@logger, Logger.new(STDOUT)
票数 294
EN

Stack Overflow用户

发布于 2014-12-18 13:59:34

在Rails 3+中,您可以使用ActiveRecord::Relation的to_sql方法:

代码语言:javascript
复制
User.where(:id => 3).to_sql
#=> "SELECT \"users\".* FROM \"users\"  WHERE \"users\".\"id\" = 3"
票数 41
EN

Stack Overflow用户

发布于 2016-02-01 21:24:41

在Rails 4中有.explain方法。

(.to_sql也可以,但不会显示包含)

代码语言:javascript
复制
Category.includes(:products).explain
=> EXPLAIN for: SELECT "categories".* FROM "categories" 0|0|0|SCAN TABLE categories

EXPLAIN for: SELECT "categories_products".* FROM "categories_products" WHERE "categories_products"."category_id" IN (1, 2) 0|0|0|SCAN TABLE categories_products

EXPLAIN for: SELECT "products".* FROM "products" WHERE "products"."id" IN (1, 2, 3, 4, 5, 6, 7) 0|0|0|SEARCH TABLE products USING INTEGER PRIMARY KEY (rowid=?) 0|0|0|EXECUTE LIST SUBQUERY 1
票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2936000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档