2 回答
TA贡献1963条经验 获得超6个赞
您应该始终使用explicit joinfor 最佳实践,而不是使用implicit joinon wherecondition。
从表的给定架构中,您可以尝试以下操作
SELECT
C.id,
COUNT (L.linea_construccion)
FROM Linea L
join Predio P
on L.comuna = P.comuna
join Comunas C
on L.comuna = C.comuna
where L.calidad_construccion = 1
AND P.avaluo_exento > C.avaluo_promedio
GROUP BY
C.id
TA贡献1799条经验 获得超9个赞
首先,使用正确、明确、标准、可读的JOIN语法重写查询:
SELECT C.id, COUNT(*)
FROM Linea L JOIN
Comunas C
ON L.comuna = C.id JOIN
Predio P
ON C.id = P.comuna AND P.avaluo_exento > C.avaluo_promedio
WHERE L.calidad_construccion = 1
GROUP BY C.id ;
从以下索引开始:
Linea(calidad_construccion, comuna)
Comunas(id, avaluo_promedio)
-- 如果“id”是主键,则可能不需要Predio(comuna, avaluo_exento)
根据您拥有的“communas”数量和返回的数量,您可以通过消除外部GROUP BY
.
添加回答
举报