2012-05-29 50 views
1

我知道有兩種方法可以通過AR在Rails中獲取結果,這裏有兩個示例查詢返回相同的結果但創建不同的SQL查詢。什麼是兩個日期之間查詢的ActiveRecord/SQL性能

A) where("created_at < ? and created_at > ?", week1, week2)

B) where(:created_at => week1..week2)

第二個(除了是更好看的,IMHO)還創建BETWEEN類型的SQL查詢,而第一個是相當多的自我解釋。

哪一個表現更好,或者除了風格以外的其他原因更好?

+0

它應該是B)哪裏(:created_at => week2..week1) –

+0

你能給一個理由嗎?這就是我正在尋找,請原因 –

回答

0

這將是分貝具體..as點點軌產生這些查詢他們

A) WHERE (created_at < '2012-05-29 13:14:50' and created_at > '2012-05-28 15:14:50') 

B) WHERE (`questions`.`created_at` BETWEEN '2012-05-28 15:14:39' AND '2012-05-29 13:14:39') 

:)你不應該擔心太多關於它......只要您使用的ActiveRecord

看看this

1

我認爲B是大多數人會去的,因爲他們寫的代碼少,根本不需要考慮SQL查詢。

對於性能,我認爲它應該是相同的。 MySQL只是提供了一種更好的方法來執行範圍值中的where子句。

+0

謝謝,很高興知道。 –

+0

不客氣,:) – Chamnap

相關問題