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.
中优化抓取了
所以我一直致力于优化内部连接与具有 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.
中优化抓取了