SQL優化

SQL優化介紹

SQL優化是一個分析,優化,再分析,再優化的過程。站在執行計劃的角度來說,我們這個過程,就是在不斷的減少rows的數量。主要步驟有:

  1. 索引:通過explain 來查看執行計劃。通過這一步驟,我們能夠分析出,該語句有沒有走索引,索引合不合理的重要依據。《讀懂MySQL執行計劃》
  2. 縮小範圍。例如使用 < > ,between …and。來縮小掃描範圍
    1. (對於該類,通常可優化於limit,時間範圍等SQL,而且非常有效)。
  3. 減少join數據的數量 (對於連接查詢,我們必須儘可能減少每個子連接的結果集數量,只包含有效數據)
  4. 避免類型轉換:隱式類型轉換是最容易疏忽的慢SQL
    1. 如何避免?大家可以參考之前的文章《談談MySQL隱式類型轉換》。
  5. 用 in 代替 or, 少用like,避免使用函數運算

分庫分表系統拆分

對於互聯網應用,特別是高併發應用來說,我們遇到多表連接導致慢SQL影響性能時。

我們不應一味的追求在SQL上如何優化。更應該考慮這樣的設計是否合理,是否有拆分的可能性。所以,

系統拆分纔是解決慢SQL的終極方法

報表庫、本地緩存、redis熱點

其實呀,有些SQL是無法再進行優化的,爲什麼這麼說呢?沒有在線運算,沒有離線運算,統計報表如何出?在一定量級的數據表中,做統計報表。即使合理的索引,也會比較慢,這時建議將這些SQL放入特定的報表庫執行。以免造成主庫壓力。性能下降。對主流程造成影響

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