mysql 優化 sql查詢優化
阿新 • • 發佈:2020-01-28
1.永遠是小表驅動大表
優化原則:
2.優化order by 語句
-
order by子句,儘量使用Index方式排序,避免使用FileSort方式排序。儘可能在索引列上完成排序操作,遵照索引建的最佳左排序
-
優化策略:
*增大sort_buffer_size引數設定
*增大max_length_for_sort_data引數設定order by 關鍵字優化:
1.Order by 時select*是一個大忌只Query需要的欄位,這點非常重要,在這裡的影響是:
(1)當Query的欄位大小總和小於max_length_for_sort_data,而且排序欄位不是TEXT|BLOB型別,會用改進後的演算法-----單路排序,否則用老演算法----多路排序
2.嘗試提高sort_buffer_size
**不管用哪種演算法,提高這個蠶食都會提高效率,當然要根據系統的能力去提高
3.嘗試提高max_length_for_sort_data
提高這個引數,會增加用改進演算法的概率,但是如果設的太高,資料總容量超過sort_buffer_size的概率就增大,明顯症狀是高的磁碟I/O活動和低的處理器使用率。
3.group by 關鍵字優化與order by 類似:
不同點:
-
group by實質先排序後進行分組,遵照索引建的最佳左字首
-
當無法使用索引列,提高sort_buffer_size+提高max_length_for_sort_data
-
where高於having,能寫在where的條件不要寫到having
***帥氣的遠遠啊***