我使用 Rails 5.1.4、Sequel 5.9.0、Postgre、rack-mini-profiler(最新)、sequel-rails 1.0.1。
我试图弄清楚为什么我的应用程序很慢。这是我发现的。
我做了一个简单的查询来获取帖子使用
@posts = Post.all
并得到〜150。
我有一部分要渲染它。这是简化的:
<% @posts.each do |post| %>
<%= post.title %>
<%= post.body %>
<% end %>
当我查看 rack-mini-profiler 的日志时,我看到了
SELECT NULL;
请求减慢渲染,但如果我将.
方法更改为:[]
:
<% @posts.each do |post| %>
<%= post[:title] %>
<%= post[:body] %>
<% end %>
查询消失,NULL
渲染变得更快。(两者都是我数据库title
中body
的字段,仅此而已。)
为什么?这是我需要知道的关于续集的事情吗?在那种情况下我不应该instance.method
在未来使用,或者我错过了什么?
当我尝试来自控制台的请求时,我得到了:
> Post.first
D, [2018-06-09T22:46:41.277269 #96772] DEBUG -- : (0.001008s) SELECT NULL
D, [2018-06-09T22:46:41.277952 #96772] DEBUG -- : (0.000362s) SELECT * FROM "posts" LIMIT 1
第一个幻像请求是什么?如何调试和删除它?