我看過一篇文章說,爲了獲得更好的性能,應該使用find_by_sql(xxxxxxxxx)
來代替find_by_name('John')
。 這是真的嗎?我們是否應該使用SQL命令而不是使用ActiveRcord?
這兩種模式有什麼區別?
如果你能展示一些例子,我會很感激!
我看過一篇文章說,爲了獲得更好的性能,應該使用find_by_sql(xxxxxxxxx)
來代替find_by_name('John')
。 這是真的嗎?我們是否應該使用SQL命令而不是使用ActiveRcord?
這兩種模式有什麼區別?
如果你能展示一些例子,我會很感激!
如果你要找的是性能良好的,你不應該使用Rails和Ruby。
find_by_sql
http://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是一種魔法幫手。
簡短的回答 - 不,提供的示例是針對單個行的單個查詢。不同的例子可能會有所不同。傳統的Rails思維模式不太關心查詢速度,更多關注緩存。 – timpone