我有兩個表與多對一的關係,我將調用Parent_Table和Child_Table(即一個父母有零個或多個孩子,但孩子只有一個父母) 。我需要計算至少有一個孩子滿足某些條件的父母的人數。哪個查詢是最佳的?爲多對一的關係優化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>
或者是它的東西其他完全?它取決於每個表的大小,或者這兩個條件的複雜程度,或者數據是否被排序?
編輯:數據庫是Oracle。
爲什麼不對一些適當大小的樣本數據做一些性能測試? –
在SQL Server 2005或更高版本中,選項2和3將被處理相同。 – JNK
爲了得到準確的答案,請分享你的RDBMS。 – JNK