前言
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表結構 使用者名稱,...