当我们使用ActiveRecord时,我们可以使用:
User.find(:first, :conditions=>["name=?", name])看起来ActiveRecord使用的是“准备好的语句”,但仔细查看代码后,我发现ActiveRecord只是使用String.dup和connection.quote()来调整内容来构建一个sql,而不是像Java那样。
那么,raiils中没有真正的prepared statment吗?为什么rails不提供它呢?
发布于 2010-06-21 23:31:34
如果您所说的准备好的语句是指以编译形式保存的一段SQL,以便更有效地执行,那么您是正确的:它不是在Rails中实现的东西。这有几个原因:
。
发布于 2013-04-18 02:37:09
Rails 3.1 (或更高版本)支持预准备语句。您进行的每个新查询都将添加到预准备语句池中。如果您正在使用MySql DB,它仍然不支持预准备语句,因为与不使用预准备语句相比,在MySql中使用预准备语句会降低性能。Pat Shaughnessy在这方面发表了一篇很好的文章:Here。
发布于 2010-06-22 00:09:34
在许多(大多数?)方式,数据库视图是一个已准备好的语句。在ActiveRecord中使用视图也很容易。只需在DB中声明视图(我使用rake任务),然后通过ActiveRecord访问它。
适用于对复杂SQL的只读访问。省去了解析/计算SQL所需的许多步骤。
https://stackoverflow.com/questions/3085222
复制相似问题