을 조인 나는 다음과 같은 하위 쿼리가 있습니다내부와 상관 하위 쿼리의 향상 성능이
SELECT
b.state,
b.city,
count(b.state) as totalCount,
sum(cast(replace(b.annual_prod, ',','.') as decimal)) AS annualProd,
(
SELECT count(size_k)
FROM opentable_clean a
WHERE a.state = b.state
AND a.city = b.city
AND cast(replace(a.size_k, ',','.') as decimal) >= 20
GROUP BY a.state, a.city
) as Above20k
FROM opentable_clean b
GROUP BY b.state, b.city
ORDER by annualProd DESC;
이 작동하지만 쿼리가 매우 비효율적이고 기본 테이블의 크기를 주어진 시간이 오래 걸립니다. 내부 조인을 사용하면 성능을 향상시킬 수 있다고 생각하지만 작동하는 것은 시도 할 수 없었습니다.
나는 SQL에 익숙하지 않으므로 어떤 제안이 도움이 될 것입니다.
당신이 그 유형 변환 및 문자열 조작 ('특히 a.size_k') 문자열로 수치를 저장하고있는 것으로 보인다 당신의 내부'where' 절이 SARG 가능하지 않을 가능성이 있습니다. 수치 데이터를 올바르게 저장하도록 테이블을 수정할 수 있습니까? – alroc
어떤 DBMS를 사용하고 있습니까? 포스트그레스? 신탁? –
나는 postgres를 사용하고 있습니다 – user3003374