[英]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.