distinct會影響效率嗎

distinct會影響效率嗎

distinct不會影響效率,只是這種代碼的效率很低。

大多數情況下,Distinct函數都會導致對最終結果集完成一次排序,因此,這就成爲成本最昂貴的排序之一。Distinct一直是SQL語言中成本最高的函數之一。不過,對於DB2V9,優化工具會盡量利用索引來消除爲確定唯一性所帶來的排序,其方法類似於目前用GroupBy語句完成優化時的做法。不過,實際上不必在SQL中使用Distinct,完全可以使用其他方式重寫查詢來得到同樣的結果,這樣做往往更爲高效。開發人員現在都很喜歡用Distinct,很多人在所有語句上都會加上Distinct來確保不出現重複。不過這種代碼的效率很低。在對應用調優時,我首先要做的事情之一就是審查源代碼,找出所有包含Distinct的語句,瞭解這些查詢是否確實會得到重複的結果,查看這個Distinct是否會導致一個排序,然後重寫這些語句。通過對每晚批量作業的全面分析,就能很容易地大幅減少批量處理週期時間。不過要記住,如果查詢中包含Distinct,只要不會因此導致執行一個排序,這個查詢可能也很高效。