【问题标题】:Are we supposed to use SQL command instead of using ActiveRcord?我们应该使用 SQL 命令而不是使用 ActiveRcord 吗?
【发布时间】:2013-07-16 03:15:07
【问题描述】:

我读到一篇文章说,为了获得更好的性能,应该使用find_by_sql(xxxxxxxxx) 代替find_by_name('John')。 这是真的吗?

这两种模式有什么区别?
如果您能提供一些示例,我将不胜感激!

【问题讨论】:

  • 简短回答 - 不,提供的示例是针对单行的单个查询。不同的例子可能会有所不同。传统的 Rails 思维方式是较少关注查询速度,而更多地关注缓存。

标签: ruby-on-rails ruby-on-rails-3 rails-activerecord


【解决方案1】:

如果您正在寻找良好的性能,您不应该使用 Rails 或 Ruby。

find_by_sqlhttp://apidock.com/rails/ActiveRecord/Base/find_by_sql/class

find_by 是一个基于数据库列的动态查找器。例如:

Post.find_by_name('John') 将返回一个在 name = 'John' 的位置找到的帖子对象。仅供参考,这是一个 LIMIT 1 语句,因此如果您有多个名为 John 的 Post 对象,它只会返回 1。

说到底,find_by_sql是你想运行纯SQL命令,而find_by是一个神奇的助手。

【讨论】:

  • 我已经知道你向我解释了什么。不过非常感谢。我只想知道如果我想要更好的性能,是否应该在控制器中使用 SQL 命令。让它更快不应该是一个技巧吗?
  • 您的问题与上下文相关,取决于您尝试检索的数据类型。如果有一些复杂的连接、分组、排序等,那么我同意也许编写一个合法的 SQL 查询将是可行的方法,因为 AR 在这些情况下存在问题。
猜你喜欢
  • 2011-05-04
  • 1970-01-01
  • 2011-06-10
  • 2014-01-06
  • 1970-01-01
  • 2023-03-15
  • 2011-03-02
  • 2010-09-28
  • 1970-01-01
相关资源
最近更新 更多