簡體   English   中英

調優SQL查詢(查詢優化)

[英]Tuning up a SQL query, (query optimization)

我試圖調整在查詢中具有IN子句的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 ,當我將其更改為正確的查詢時,它給了我正確的結果。

SELECT pe.id
FROM   SHOP.person pe
WHERE  EXISTS (
   SELECT *     
   FROM   SHOP.contactperson cp
   WHERE cp.personid = pe.id
   AND  cp.companyid = 5
   ); 

您的join子句沒有使用與原始查詢相同的字段。 您應該使用聯系人表中的個人ID。

SELECT person.id
FROM SHOP.person 
Join SHOP.contactperson
ON person.id = contactperson.personid 
WHERE contactperson.companyid = 5;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM