前言
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 會自己幫你把小結果集的表選爲驅動表。
結束
今天受打擊了,還是基礎太差了,踏踏實實的吧!之前就是太浮躁了。