在rails中直接编写SQL查询是一个好习惯吗?

时间:2012-03-15 06:55:54

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

我正在创建一个包含非常庞大的数据和多个连接的应用程序。立即在rails中使用完整的sql字符串是不好的做法?在rails中编写完整的sql查询有什么缺点?

3 个答案:

答案 0 :(得分:4)

如果你在不了解替代方案的情况下这样做,那只是不好的做法。

那说很少有理由这样做。该框架为您封装了它,并且您必须编写更少的代码。另一个好处是数据库独立性。您编写的查询越直接,您编写的内容就越有可能在切换数据库引擎时中断。

很容易测试。如果您正确使用框架(即,您将在许多文章中讨论优化ActiveRecord)并且仍然觉得您的查询太慢......您可以始终对直接查询进行基准测试。

但不知道如何使用ActiveRecord关联做某事并不是诉诸直接SQL的好理由。

http://guides.rubyonrails.org/association_basics.html

答案 1 :(得分:1)

如果您需要比提供标准ActiveRecord模块更强大的语法,请参阅meta_where gem。

答案 2 :(得分:1)

SQL本身并不是一种“坏习惯” 。数据库系统有很多本地SQL方法,如果用Ruby编写,执行速度会慢得多,编写和维护也会更复杂。就像Oracle的分析函数一样。

也就是说,ActiveRecord很容易编写 你可能不会仅通过使用SQL查询来提升性能。至少不会,如果您编写的查询类似于ActiveRecord的查询,那么无论如何! ;)

也许您应该尝试使用ActiveRecord,并且只有在遇到无法用另一种方式解决的问题时才使用SQL。这样你就可以保持代码简单,直到你需要以另一种方式进行(即不要'尽早优化')。

我通常会尝试使用ActiveRecord(或DataMapper或Sequel等)工作,但是当工作需要快速完成时我肯定使用了finder_sql而且我无法使用ORM的“糖”来到达我想去的地方。其他时候我将rails对象基于数据库中的单个大型视图。

希望这有帮助。

:d