如果我使用'有'作爲'Where'(即沒有group by子句), 您能告訴我哪一個更快'Where'或'Having(as where)'嗎? 我們不得不選擇哪一個?有OR哪裏,哪個性能更快?
情景 - 我正在使用此條件查找使用經度和緯度的特定距離的位置。
如果我使用'有'作爲'Where'(即沒有group by子句), 您能告訴我哪一個更快'Where'或'Having(as where)'嗎? 我們不得不選擇哪一個?有OR哪裏,哪個性能更快?
情景 - 我正在使用此條件查找使用經度和緯度的特定距離的位置。
如果某個條件引用了aggregate
函數,請將該條件置於HAVING
子句中。否則,請使用WHERE
子句。
您可以使用HAVING
,但建議您應該使用GROUP BY
。
SQL Standard
表示WHERE
在返回行之前限制結果集,HAVING
限制帶來所有行後的結果集。所以WHERE
更快。
「除非您還使用GROUP BY,否則不能使用HAVING。」 - 我不這麼認爲。我們可以使用沒有'分組'。但我想我在你的最後一句話中得到了答案。 – Abhi
@Abhi,但推薦使用'Group By' – Amit
實際上有兩種情況使用lat和long來找到附近的位置。在一個 - 我們正在計算從源到目的地的距離。在這種情況下,我只是把'擁有dist> 200'。但是還有一種方法可以獲得緯度和長距離,這裏如果我們在'lat> = lat_calucated和lng <= lng_calucated中傳遞它。它給出了相同的結果。這就是我提出上述問題的原因。我必須選擇哪一個? – Abhi
這裏似乎只等於其中HAVING
和WHERE
的區別是:你不能在一般使用它作爲選擇,但有關它的一切是覆蓋在 HAVING without GROUP BY 此鏈接
這裏是他們的速度的題目是:Which SQL statement is faster? (HAVING vs. WHERE...)
其實你可以做你自己的基準。 –
你實際使用的是什麼RDBMS? 「HAVING」和「WHERE」通常不可互換,因爲「HAVING」適用於組和行上的「WHERE」。 –
如果我們刪除'group by'子句讓它像Where一樣工作。這意味着兩個查詢都會得到相同的結果。所以我的問題是哪一個更快? – Abhi