postgresql SQL COUNT(DISTNCT FIELD) 優化

引用

引自文章1:https://www.cnblogs.com/wangzhen3798/p/7630602.html
引自文章2:https://www.jb51.net/article/65680.htm
感謝前輩們趟坑分享。

背景

統計某時段關鍵詞的所有總數,也包含null (statistics 有400w+的數據,表大小爲 600M),故
寫出sql:

select count(distinct keyword) +1 as count from statistics;

問題

雖然是後臺查詢,但是太慢了,執行時間爲爲 38.6s,那怎麼優化呢?

解決

方法1(治標)

把這個定時執行,然後把sql結果緩存下,然後程序訪問緩存結果,頁面訪問是快了些,但是本質上還沒有解決sql執行慢的問題。

方法2(治本)

優化sql,首先說說 count( distinct FIELD) 爲啥這麼慢,此處不再贅述了,請看 前輩的說明:https://www.jb51.net/article/65680.htm

優化內容:

select count( distinct FIELD ) from table

修改爲

select count(1) from (select distinct FIELD  from table) as foo;

比較

執行過程比對,可以使用 explian anaylze sql語句 查看

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章