多表索引優化分析

2021-10-16 17:05:20 字數 702 閱讀 6950

圖為兩張表

左連線用右表索引

select * from class left join book on class.card=book.card;那麼索引應該建在右表book的card欄位。

右連線用左表索引

如果索引已然建立在class的card欄位上,那麼使用select * from book right join class on book.card=class.card;,查詢效率會更高。

上面兩種情況結果是一樣的,查詢結果和explain結果都是。

和兩表一樣,左連線用右表索引右連線用左表索引

左連線時是左表驅動右表,即左表要全部查詢,再根據左表查詢的結果去查詢右表。

那麼右連線時就是右表驅動左表。

寫join語句時,應永遠用小結果集驅動大結果集保證join語句中被驅動表上join條件欄位已被索引,當無法保證被驅動表的join條件欄位被索引且記憶體資源充足的前提下,不要吝嗇joinbuffer的設定。

索引優化分析(三)

是mysql提供的一種日誌記錄,用來記錄在mysql中響應時間超過閾值的語句,具體指執行時間超過long query time值的sql,則會被記錄到慢查詢日誌中 long query time的預設值為10s,sql語句執行超過10s,則記錄下來,在結合explain sql語句分析。1 檢視是否...

索引優化分析(二)

explain sql語句 explain select from table name查詢結果如下 1 id selectct 查詢的序列號,包含一組數字,表示查詢中執行select子句或操作表的順序 查詢順序 a id相同,執行順序由上至下 b id不同,如果是子查詢,id的序號會遞增,id值越...

MySQL索引優化分析

1.通過訂單號查詢某個訂單,用唯一索引 資料量幾百萬以上 2.order by 排序時,後面欄位加 強制指定索引 select from orderforce index idx ordere order by order level,input date 哪些情況需要建索引 1 主鍵,唯一索引 2...