我想調整查詢中具有IN子句的SQL查詢。調整SQL查詢,(查詢優化)
我試着用Join來替換IN並查看了查詢計劃。兩者在執行時間看起來都差不多,但結果卻不同。可以有人幫我解決這個問題嗎? 我正在使用pgadmin III中的商店數據庫。 在此先感謝。 原始查詢:
SELECT person.id
FROM SHOP.person
WHERE person.id IN (SELECT personid
FROM SHOP.contactperson
WHERE companyid = 5);
到
SELECT person.id
FROM SHOP.person
JOIN SHOP.contactperson
ON person.id = contactperson.id
WHERE contactperson.companyid = 5;
編輯:現在這個查詢返回正確的結果:
SELECT person.id
FROM SHOP.person
JOIN SHOP.contactperson
ON person.id = contactperson.personid
WHERE contactperson.companyid = 5;
我用contactperson.id
代替contactperson.id
,當我將其更改爲正確的查詢,它給了我正確的結果。
性能調優是**高度特定供應商的** - 我們需要知道** **(和版本),你用什麼具體的數據庫。 SQL只是查詢語言 - 絕大多數關係數據庫系統使用的是...... –
@marc_s它是一個商店數據庫,我在pgadmin III中使用它。 –
請顯示您的表結構,包括索引和查詢計劃。 –