sql語句中對單個字段去重,distinct和group by性能分析


distinct簡單來說就是用來去重的,而group by的設計目的則是用來聚合統計的,兩者在能夠實現的功能上有些相同之處,但是2者的性能差距很大

對於一個84萬數據量的表,count(distinct(XXX))的查詢需要20s,而group by僅需1s,性能相差20倍

原理分析:

distinct方式就是兩兩對比,需要遍歷整個表,大多數情況下都會導致對最終結果集進行一次排序;

group by分組類似先建立索引再查索引,所以兩者對比,小表distinct快,不用索引。大表group by快。一般來說小表就算建索引,也不會慢到哪兒去;但如果是TB級大表,遍歷簡直就是災難。

所以distinct一直是sql語言中成本最高的函數之一,很多Oracle項目都禁止使用distinct語句,全部要求替換成group by。

-->原博文出處


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM