1. 程式人生 > 資料庫 >mysql 優化 sql查詢優化

mysql 優化 sql查詢優化

1.永遠是小表驅動大表
優化原則:
在這裡插入圖片描述
2.優化order by 語句

  1. order by子句,儘量使用Index方式排序,避免使用FileSort方式排序。儘可能在索引列上完成排序操作,遵照索引建的最佳左排序

  2. 優化策略:
    *增大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的容量,超出之後,會建立tmp檔案進行合併排序,導致多次I/O,但是用單路排序的風險會很大一些,所以要提高sort_buffer_size。
    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

     									***帥氣的遠遠啊***