group by 子查询后的内部连接优化

inner join optimization after group by the subquery

所以我一直致力于优化内部连接与具有 group by 语句的子查询。下面的查询需要大约 1.8 到 2 秒的时间来获取。我想优化它,我认为子查询将是一个关键。

我不确定在 inner join 中使用 group by 的子查询是否可以使用索引来连接另一个 table。我认为子查询中的列(在本例中为 A2、C2)在内部连接中不能有自己的索引。对吗?

所以,我的问题是如何优化这个查询语句,是否可以在内部连接中在 A2、C2 上设置索引。

SELECT A, C, X.S
FROM tb_g X 
INNER JOIN ( 
    SELECT A AS A2, MAX(C) AS C2
    FROM tb_g
    GROUP BY A 
) Y 
ON X.A = Y.A2 AND X.C = Y.C2;

A, C 上的复合索引应尽可能优化此查询:

ALTER TABLE tb_g ADD INDEX (A, C);

这个索引可以让子查询完全用索引来计算,然后和中间table的join就可以在原table.

中优化抓取了