慢SQL治理最佳實踐
阿新 • • 發佈:2022-04-01
慢SQL治理主要從三個方面進行優化
- 從資料表的定義開始優化
- 從索引設計開始優化
- 從查詢開始優化
優化表設計
- 表字段長度儘量緊湊,欄位儘量不冗餘
- 欄位型別儘量考慮用簡單的型別
- 欄位儘量有預設值,且預設值儘量不要用null
優化索引
設計索引的時候,儘量讓查詢用到索引,並且減少回表次數。
- 業務查詢頻率高的欄位儘量設計成覆蓋索引,比如
select age, name from user where name='張三'
, 如果建立了(name, age)的覆蓋索引,可以避免回表查詢 - where語句要能用到索引,並且避免出現使索引失效的情況,比如對索引欄位進行了函式操作等
- 排序欄位儘量按照索引排序,避免使用到外部排序,比如file sort
優化查詢
- 確保select 的欄位都是業務所需的,避免直接使用
select *
- 複雜查詢拆分成多個簡單查詢
- 一次返回的資料條數不能太多,分批次返回
- 限制in查詢中的條目
- 分頁查詢時,頁數越大時,效能越差,建議結合id>LastedMaxId查詢
- join查詢的表不能太多,後面儘量優化為單表查詢