2013-07-16 41 views
-1

我看過一篇文章說,爲了獲得更好的性能,應該使用find_by_sql(xxxxxxxxx)來代替find_by_name('John')。 這是真的嗎?我們是否應該使用SQL命令而不是使用ActiveRcord?

這兩種模式有什麼區別?
如果你能展示一些例子,我會很感激!

+0

簡短的回答 - 不,提供的示例是針對單個行的單個查詢。不同的例子可能會有所不同。傳統的Rails思維模式不太關心查詢速度,更多關注緩存。 – timpone

回答

1

如果你要找的是性能良好的,你不應該使用Rails和Ruby。

find_by_sqlhttp://apidock.com/rails/ActiveRecord/Base/find_by_sql/class

find_by是基於數據庫的列的動態取景器。例如:

Post.find_by_name('John')將返回一個post對象,其中name ='John'。僅供參考這是一個LIMIT 1語句,所以如果您有多個名爲John的Post對象,它將只返回1.

最後,find_by_sql是如果您想要運行純SQL命令,而find_by是一種魔法幫手。

+0

我已經知道你向我解釋了什麼。非常感謝。我想知道的是,如果我想要更好的性能,是否應該在控制器中使用SQL命令。難道不應該讓它變得更快嗎? – MKK

+0

你的問題是非常上下文的,它取決於你試圖檢索的數據類型。如果有一些複雜的連接,分組,排序等,那麼我會同意,由於AR在這些實例中有問題,編寫合法的SQL查詢將是一條可行的路。 – dasnixon

相關問題