MySQL學習筆記 join速度特別慢引出的問題

2021-07-11 10:04:56 字數 1068 閱讀 8340

今天整合資料時,出現關聯速度超級慢的問題,過程如下:

建立臨時表:

create table tmp1 as select id,count count_1,amnt amnt_1 

from export_info where s_id=1;

create table tmp2 as select id,count count_2,amnt amnt_2

from export where s_id=2;

關聯tmp1、tmp2,並建目標表tmp12:

create table tmp12 as

select a.id,a.count_1,a.amnt_1,b.count_2,b.amnt_2 from

tmp1 a join tmp2 b on a.id=b.id

結果此步速度超級慢。。。。tmp1、tmp2兩張表的記錄在30w左右的樣子,感覺也不是資料量的問題。

網上查了一些join慢的原因,看到有加索引來提高查詢速度的,意識到建的這tmp1、tmp2兩張表,沒有新增主鍵也沒有索引,嘗試對id欄位設定為主鍵後,再次關聯

設定主鍵:

alter table tmp1 add primary key(id);

alter table tmp2 add primary key(id);

再次關聯建表:

create table tmp12 as

select a.id,a.count_1,a.amnt_1,b.count_2,b.amnt_2 from

tmp1 a join tmp2 b on a.id=b.id

原來是建表未新增主鍵,或者索引的問題,新增id為主鍵時,id欄位也自動加為了索引字段,問題解決。

索引提供了高效訪問資料的方法,加快了查詢速度。如果沒有索引時,查詢語句會掃瞄表中所有記錄。有索引的情況下能快速定位到待查詢記錄,來達到提高查詢速度的效果。在這兩張表資料量都為30w的情況下,id欄位不加索引的話查詢速度不慢才怪。。。

MySql 學習筆記 連線表(JOIN)

inner join內連線 將乙個表中的行與其他表中的行進行匹配 select column list from t1inner join t2 on join condition1 inner join t3 on join condition2 where where conditions 由於...

Mysql學習筆記(2) 常見通用JOIN查詢

左連線 left join a所有,包含與b的交集 select from a left join b on a.key b.key 結果 a所有 ab交集右連線 right join b所有,包含與a的交集 select from a right join b on a.key b.key 結果 ...

mysql開發之join語句學習

內連線 inner join 左外連線 left outer 右外連線 right outer 交叉連線 cross 內連線,兩個表中重複部分 全外連線,兩個表所有字段 左外連線,顯示左表所有欄位和左右表重複字段 右外連線,顯示右表所有欄位和左右表重複字段 交叉連線,左表每個記錄乘以右表每個記錄,如...