圖為兩張表
左連線用右表索引
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...