MySQL優化之關聯查詢優化

前言

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

正文

一、left join

先寫一個SQL語句看看怎麼性能如何:
在這裏插入圖片描述
這樣的情況怎麼去優化呢?肯定是使用到的查詢字段去建索引。
哪就先給idx_card表的card字段加上索引看看有沒有效果。
執行:

ALTER TABLE `book` ADD INDEX idx_card( `card`);

在這裏插入圖片描述
建完索引後再接着運行咱們的查詢語句看看怎麼樣了。
在這裏插入圖片描述
果然是有點變化。
前邊說過了,在使用的查詢條件中添加索引,現在把剛建的索引刪除,然後重新在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 會自己幫你把小結果集的表選爲驅動表。

結束

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章