MySQL優化|一分鍾帶你了解三表聯查優化


創建表

其余倆張邊在雙表優化的案例說過,過去直接復制即可
雙表優化

1 CREATE TABLE IF NOT EXISTS `phone` (
2 `phoneid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
3 `card` INT(10) UNSIGNED NOT NULL,
4 PRIMARY KEY (phoneid)
5 );

在開始前,分享給大家我看過覺得講數據庫講的算是很不錯的,也在B站擁有百萬播放量的教程。

這個MySQL視頻是動力節點的老杜講解,個人也很喜歡老杜的教學風格。

涵蓋了MySQL的相關知識,包括MySQL概述,MySQL應用環境,MySQL系統特性,MySQL初學基礎,MySQL管理工具,如何安裝MySQL及MySQL新特性等等。

學完這套視頻基本可掌握MySQL全套知識了,值得收藏學習,需要的小伙伴點擊以下鏈接👇

在線觀看:

最實用的MySQL教程視頻課程 - MySQL - 動力節點在線 (bjpowernode.com)

資料下載:

MySQL視頻教程全套免費下載【適合零基礎入門學習】 - 動力節點 (bjpowernode.com)

模擬數據

1 INSERT INTO phone(card) VALUES(FLOOR(1 + (RAND() * 20)));
2 INSERT INTO phone(card) VALUES(FLOOR(1 + (RAND() * 20)));
3 INSERT INTO phone(card) VALUES(FLOOR(1 + (RAND() * 20)));
4 INSERT INTO phone(card) VALUES(FLOOR(1 + (RAND() * 20)));
5 INSERT INTO phone(card) VALUES(FLOOR(1 + (RAND() * 20))); I
6 INSERT INTO phone(card) VALUES(FLOOR(1 + (RAND() * 20)));

查詢語句

1 select * from class left join book on class.card=book.card left join phone on book.card=phone.card

 

分析語句

看到下面的語句,全部進行了全表掃描

1 explain select * from class left join book on class.card=book.card left join phone on book.card=phone.card

 

建立索引

在雙表優化中我們知道了,在使用left join時需要給右表添加索引,這是由左連接的特性決定的,left join 是明確左邊表的數據肯定都有,從右邊表進行查詢數據

根據我們之前的學習開始建立索引,那么這個索引就應該建立在book和phone上,那么下來我們開始建立索引

1 # 創建索引
2 create index ind_card on book(card)
3 create index ind_card on phone(card)
4 
5 # 查看索引
6 show index from book
7 show index from phone

 

分析語句

 

 此次優化總結

  • 在進行雙表聯查時我們使用了left join
  • 第一次在左邊的表加了索引
  • 但是沒有效果
  • 這是由左連接的特性決定的,left join 是明確左邊表的數據肯定都有,從右邊表進行查詢數據
  • 所以右邊是關鍵,我們一定要加上索引
  • 那么三表查詢也是同樣的,反正記住一點,左連接加右表,右連接加到左表
  • 小表驅動大表

————————————————

原文鏈接:https://blog.csdn.net/fangkang7/article/details/105301532


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM