SQL多表優化思路

2021-10-07 03:47:34 字數 543 閱讀 1605

一、驅動表選擇

左右連線可以指定驅動表,但是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...