一、驅動表選擇
左右連線可以指定驅動表,但是inner join無法指定,一般是系統自動判定
1.當使用left join時,左表是驅動表,右表是被驅動表
2.當使用right join時,右表時驅動表,左表是驅動表
3.當使用join時,mysql會選擇資料量比較小的表作為驅動表,大表作為被驅動表
所以普遍的優化方案是小表作為外表(驅動表),用小表去驅動大表。
有朋友可能會問,為什麼驅動表的作用差異如此大呢?
因為資料儲存在硬碟中,每一次連線,從硬碟讀取和匹配需要耗費大量資源。所以,連線次數越少,消耗的資源就越少。
二、索引在
where和join
**現的列需要建立索引,根據實際情況,使用單列索引或者組合索引。
三、返回更少的資料
1、資料分頁處理
2、只返回必要的字段
多表查詢SQL優化
多表連線left join 是乙個例子 三張表,也就是多表聯查,使用聚集函式sum,用到了group by select c.channel short nameu.user name,bs.settlement amount bs.received amount trans,bs.bill sou...
SQL優化例項 思路分析
一sql優化思路 乙個真實具體的sql優化思路 一般都看預估的執行計畫,比如遇到乙個sql執行計畫很長,很複雜,從計畫中沒有看到返回行數多,cost高或連線方式錯誤的地方,沒有明顯瓶頸,但整體邏輯讀很高,執行很慢。這時就可以去看真實的執行計畫,並檢視真實計畫裡邏輯讀cr最多的步驟。可以做個10046...
慢Sql語句優化思路
1.開啟慢查詢日誌,設定超過幾秒為慢sql語句,抓取慢sq語句。l 2.通過explain檢視執行計畫,對慢sql語句分析。3.建立索引並調整語句,再檢視執行計畫,對比優化結果。先看type all全表掃瞄,沒有用到索引 再看key null沒有使用索引列 然後看rows 數值越多耗時越長 最後看e...