是否可以创建一个索引,以便在 group by 对来自不同表的两个或多个列进行分组的情况下不创建临时表?
例子:
SELECT T1.c1, T2.c2, COUNT(*)
FROM T1
JOIN T2 USING (pk)
WHERE
T1.c3 = 100
GROUP BY T1.c1, T2.c2
我可以使用什么索引组合以便不创建临时表?
是否可以创建一个索引,以便在 group by 对来自不同表的两个或多个列进行分组的情况下不创建临时表?
例子:
SELECT T1.c1, T2.c2, COUNT(*)
FROM T1
JOIN T2 USING (pk)
WHERE
T1.c3 = 100
GROUP BY T1.c1, T2.c2
我可以使用什么索引组合以便不创建临时表?
不,请阅读第一个列表的第一点的解释。此查询中唯一可用的索引可能在T1.c3
列上。您可以通过创建一个包含两个表的视图并将其显式分组来避免临时表。