MySQL学习笔记:join速度特别慢引出的问题

今天整合数据时,出现关联速度超级慢的问题,过程如下:

创建临时表:

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
运行时间:19.590s

原来是建表未添加主键,或者索引的问题,添加ID为主键时,ID字段也自动加为了索引字段,问题解决。


索引提供了高效访问数据的方法,加快了查询速度。如果没有索引时,查询语句会扫描表中所有记录。有索引的情况下能快速定位到待查询记录,来达到提高查询速度的效果。在这两张表数据量都为30w的情况下,ID字段不加索引的话查询速度不慢才怪。。。


你可能感兴趣的:(MySQL)