MySQL優化之關聯查詢優化

2021-10-07 19:06:54 字數 1720 閱讀 3603

前言

sql語句優化是很重的乙個事情。所以要去做。

正文一、left join

先寫乙個sql語句看看怎麼效能如何:

這樣的情況怎麼去優化呢?肯定是使用到的查詢欄位去建索引。

哪就先給idx_card表的card欄位加上索引看看有沒有效果。

執行:

alter

建完索引後再接著執行咱們的查詢語句看看怎麼樣了。

果然是有點變化。

前邊說過了,在使用的查詢條件中新增索引,現在把剛建的索引刪除,然後重新在class表中的card欄位建乙個索引。

刪除索引:

drop

index idx_card on book;

刪除成功:

然後重建索引:

alter

table class add

index idx_card(card)

;

新建成功:

然後再執行查詢語句會怎麼樣呢?

通過show profiles;可以比較查詢用時可以看的出來:

最後咱們得出結論:

①在優化關聯查詢時,只有在被驅動表上建立索引才有效!

②left join 時,左側的為驅動表,右側為被驅動表!

二、inner join

將兩個查詢字段調換順序,發現結果也是一樣的

在book表中,刪除9條記錄

結果顯示:

再來試試straight_join的效果

sql語句執行的結果:

最終的結論:

inner join 時,mysql 會自己幫你把小結果集的表選為驅動表。結束

今天受打擊了,還是基礎太差了,踏踏實實的吧!之前就是太浮躁了。

MySQL關聯查詢優化例項

專案中發現有乙個查詢響應非常慢,花時間分析以及優化,特地記錄。1 背景 專案採用mysql資料庫,操作使用ibatis 2 查詢說明 這個查詢是每次查詢一定數目的使用者資訊,查詢中涉及到多表關聯,具體查詢sql如下 select s.name as name,s.image as image,s.i...

MySQL關聯查詢優化例項

專案中發現有乙個查詢響應非常慢,花時間分析以及優化,特地記錄。1 背景 專案採用mysql資料庫,操作使用ibatis 2 查詢說明 這個查詢是每次查詢一定數目的使用者資訊,查詢中涉及到多表關聯,具體查詢sql如下 select s.name as name,s.image as image,s.i...

MySQL之關聯查詢

mysql聯合查詢效率較高,以下例子來說明聯合查詢 內聯 左聯 右聯 全聯 的好處 t1表結構 使用者名稱,密碼 userid int username varchar 20 password varchar 20 1 jack jackpwd 2 owen owenpwd t2表結構 使用者名稱,...