MySQL-连接3个表的查询效率极低且不可靠-如何改进?

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

我在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.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-非常感谢您的回答。我现在就要试试这个。