最近被全表查詢搞得鬱悶,轉一篇一個個試
對於百萬千萬量級別的數據進行查詢,如果查詢方式不合理的話,會嚴重影響系統的運行性能及服務器的壓力。
常見優化查詢的方案有如下:
1,對查詢進行優化,應儘量避免全表掃描,首先應考慮在where及order by 涉及的列上建立索引。
2,應儘量避免在where子句中進行null的判斷,否則將導致查詢放棄進行索引進行全表掃描。可以在null上設默認值爲0。
3,儘量避免在where子句中使用or來連接條件,否則將導致查詢放棄進行索引進行全表掃描,可以考慮使用union all替換。
4,in 和not in 要慎用,否則會導致全表掃描。能用between則不用in。
5,避免使用Like 來進行模糊查詢,可以考慮使用全文檢索。
6,儘量避免在where子句中使用!=或<>操作符,否則會導致全表掃描。
7,使用視圖加速查詢。
8,能用distinct 則不用group by。
9,能用union all 則不用union。
10,避免在where子句中進行函數操作。