instance.attribute_name 和 instance[:attribute_name] 对于 sequel 模型属性(数据库列)是否完全相同?
Is instance.attribute_name and instance[:attribute_name] exactly the same for sequel model attribute (db column)?
我使用 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
都是我数据库中的字段,没有别的。)
为什么?关于 Sequel,这就是我需要了解的吗?在这种情况下,我以后不应该使用 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
第一个幻象请求是什么?如何调试和删除它?
终于找到问题了:
这是一个 :connection_validator plugin。
绕过这个插件,除非你真的非常需要它!
我使用 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
都是我数据库中的字段,没有别的。)
为什么?关于 Sequel,这就是我需要了解的吗?在这种情况下,我以后不应该使用 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
第一个幻象请求是什么?如何调试和删除它?
终于找到问题了:
这是一个 :connection_validator plugin。
绕过这个插件,除非你真的非常需要它!