대다수의 관계가있는 두 개의 테이블이 있습니다.이 테이블을 Parent_Table 및 Child_Table (즉, 부모는 0 명 이상의 자식이 있지만 자식은 정확히 하나의 부모를가집니다) . 나는 어떤 조건을 충족시키는 적어도 한 명의 아이를 가진 부모의 수를 세고 싶습니다. 어떤 쿼리가 최적입니까?다차원 관계에 대한 SQL 쿼리 최적화
옵션 1 (확신은이 일이 아니다)
SELECT COUNT(DISTINCT(pt.ID))
FROM PARENT_TABLE pt
JOIN CHILD_TABLE ct
ON pt.ID = ct.PARENT_ID
WHERE <parent meets some condition>
AND <child meets some condition>
옵션 2
SELECT COUNT(pt.ID)
FROM PARENT_TABLE pt
WHERE pt.ID in
(
SELECT ct.PARENT_ID
FROM CHILD_TABLE ct
WHERE <child meets condition>
)
AND <parent meets some condition>
옵션 3 (가장 빠른로 내 생각 엔)
SELECT COUNT(pt.ID)
FROM PARENT_TABLE pt
WHERE EXISTS
(
SELECT 1
FROM CHILD_TABLE ct
WHERE ct.PARENT_ID = pt.ID
AND <child meets condition>
)
AND <parent meets some condition>
아니면 뭔가 그렇지 않으면 전적으로? 각 테이블의 크기 또는 두 조건의 복잡성 또는 데이터의 정렬 여부에 따라 다릅니 까?
편집 : 데이터베이스는 오라클입니다.
일부 적절한 크기의 샘플 데이터에 대해 성능 테스트를 수행해보십시오. –
SQL Server 2005 이상에서는 옵션 2와 3이 동일하게 처리됩니다. – JNK
정확한 답을 얻으려면 RDBMS를 공유하십시오. – JNK