關於mysql的join

來源:互聯網
上載者:User

標籤:orderby   group by   city   http   收藏   比較   where   技術   esc   

最近一直在困擾的mysql join的工作原理問題,公司不推薦使用多表查詢,所以我探究一下join是怎麼工作的

答案是不是的!

收藏

也就是說連表查詢說order by group by的欄位必須是驅動表裡的。

我理解:left join左邊表就是驅動表,right join右邊表就是驅動表,inner join看explain 第一行為驅動表

背景:

users 表 866行資料 主鍵索引

user_city 35行資料 主鍵索引

1.explain select users.id from user_city left join users on users.id=user_city.`user_id`

驅動表user_city user_id沒有索引,users.id主鍵索引

2.explain select users.id from user_city left join users on users.id=user_city.`id`

驅動表user_city id是主鍵索引,users.id主鍵索引

3.explain select users.id from user_city left join users on users.user_id=user_city.`id`

驅動表user_city id是主鍵索引,users.user_id沒有索引

3.explain select users.id from user_city left join users on users.user_id=user_city.`id` where user_city.id<40

驅動表user_city id是主鍵索引,users.user_id沒有索引 where條件id索引

4.explain select users.id from user_city left join users on users.user_id=user_city.`id` where user_city.user_id<1700

驅動表user_city id是主鍵索引,users.user_id沒有索引 where條件user_id沒有索引

5.這兩個比較很重要,當連表排序的時候,orderby欄位除了必須是驅動表的欄位且有索引外,過濾條件on 也必須都使用到索引才可以,是都使用!

explain select users.id from user_city left join users on users.id=user_city.`id` order by users.id desc

都使用到了索引,但是orderby的不是驅動表的欄位,肯定會出現Using temporary; Using filesort

6.explain select users.id from user_city left join users on users.id=user_city.`id` order by user_city.id desc

 都使用到了索引,orderby為驅動表欄位,不會出現Using temporary; Using filesort

7.explain select users.id from user_city left join users on users.user_id=user_city.`id` order by user_city.id desc

 user_id沒有索引,即使orderby欄位為驅動表欄位

補充一點

一般能用join肯定用join,因為嗎、這樣的話mysql就會自己判斷選擇合適的驅動表了

 

關於mysql的join

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.