我正在创建一个包含非常庞大的数据和多个连接的应用程序。立即在rails中使用完整的sql字符串是不好的做法?在rails中编写完整的sql查询有什么缺点?
答案 0 :(得分:4)
如果你在不了解替代方案的情况下这样做,那只是不好的做法。
那说很少有理由这样做。该框架为您封装了它,并且您必须编写更少的代码。另一个好处是数据库独立性。您编写的查询越直接,您编写的内容就越有可能在切换数据库引擎时中断。
很容易测试。如果您正确使用框架(即,您将在许多文章中讨论优化ActiveRecord)并且仍然觉得您的查询太慢......您可以始终对直接查询进行基准测试。
但不知道如何使用ActiveRecord关联做某事并不是诉诸直接SQL的好理由。
答案 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