[英]There is no real 'prepared statement' in rails?
当我们使用ActiveRecord时,我们可以使用:
User.find(:first, :conditions=>["name=?", name])
看起来ActiveRecord正在使用'prepared statement',但在查看代码之后,我发现ActiveRecord只是使用String.dup
和connection.quote()
调整内容来构建一个sql,而不是像Java一样。
那么,在raiils中没有真正prepared statment
吗? 为什么rails不提供它?
如果通过预处理语句表示一个以编译形式保存以便更有效执行的SQL,那么你是正确的:它不是在Rails中实现的。 有几个原因:
Rails 3.1(或更高版本)支持预准备语句。 您创建的每个新查询都将添加到预准备语句池中。 如果您正在使用MySql DB,它仍然不支持预准备语句,因为在没有预准备语句的情况下,在MySql中使用预准备语句会降低性能。 这是Pat Shaughnessy关于此的好文章。
在许多(大多数?)方式中,DB View是一个准备好的语句。 使用ActiveRecord很容易使用视图。 只需在数据库中声明视图(我使用rake任务),然后通过ActiveRecord访问它。
适用于对复杂SQL的只读访问。 从解析/计算SQL所需的许多步骤中保存数据库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.