MySQL-连接3个表的查询效率极低且不可靠-如何改进?
我在DigitalOcean机器上使用MySQL和INNODB引擎。这台机器有4GB内存、80GB磁盘和2VCPU,运行在Ubuntu 16.04上 我们有一个查询,它连接了三个运行速度非常慢的表(如果可以的话,返回大约需要5分钟)。表的大小分别为600万行、2000万行和10万行,并且表中每行都有唯一的索引 查询如下所示:MySQL-连接3个表的查询效率极低且不可靠-如何改进?,mysql,sql,Mysql,Sql,我在DigitalOcean机器上使用MySQL和INNODB引擎。这台机器有4GB内存、80GB磁盘和2VCPU,运行在Ubuntu 16.04上 我们有一个查询,它连接了三个运行速度非常慢的表(如果可以的话,返回大约需要5分钟)。表的大小分别为600万行、2000万行和10万行,并且表中每行都有唯一的索引 查询如下所示: SELECT *, table2.column1 FROM table1 INNER JOIN table2 on table1.column1 = table2.col
SELECT *, table2.column1
FROM table1
INNER JOIN table2 on table1.column1 = table2.column1
INNER JOIN table3 on table1.column2 = table3.column1
WHERE table3.column2 == "{ID}";
我们希望将此查询嵌入到数据处理/分析管道中,该管道动态地将相关数据拉入内存,然后使用R运行进一步的分析。为此,我们需要使此查询[或另一种做同样事情的查询]更高效地运行
有没有人对如何使这个查询更有效率有任何想法,或者这种减速的原因是什么?任何帮助都将不胜感激
非常感谢 对于此查询:
select table1.*, table2.column1
from table1 inner join
table2
on table1.column1 = table2.column1 inner join
table3
on table1.column2 = table3.column1
where table3.column2 = "{ID}";
您希望索引位于:
表3(第2列,第1列)
表1(第2列,第1列)
表2(第1列)
table2
和table3
都加入了table1
。请记住,如果这些联接反映的两个关系都是一对多或多对多,那么对于相同的table1
匹配,您将有table2
和table3
条目,相乘。select*
看起来很有趣,因为它后面跟的列名已经在select列表中了。您好@Gordon Linoff-非常感谢您的回答。我现在就要试试这个。