簡體   English   中英

具有NOT EXISTS的SQL查詢非常慢

[英]SQL query with NOT EXISTS very slow

我正在使用以下查詢將人員從視圖遷移到我的數據庫,這太慢了:

SELECT DISTINCT PI.VALUE ID
FROM PERSON_VIEW PERV
    inner join PERSON_IDENT PI on PI.VALUE = PERV.IDENTITY
    inner join PERSON PER on PER.ID = PI.EXTERNAL_ID
WHERE NOT EXISTS (SELECT RECORD_ID FROM PERSON_MIGR_DATA PMD
                  WHERE RECORD_ID = PERV.RECORD_ID)
  AND NOT EXISTS (SELECT RECORD_ID FROM PERSON_MIGR_ERRORS
                  WHERE RECORD_ID = PERV.RECORD_ID)

聯接字段上有索引,但是我必須更改此查詢,因為它持續15分鍾。.表很大。

所以。 我有PERSON_VIEW -從我讀的人遷移, PERSON_MIGR_DATA -遷移的人,和ID PERSON_MIGR_ERRORS的的個人記錄thath遷移過程中,未通過驗證的ID - 。

我認為,“不存在”是瓶頸。 但是如何進行此查詢以使其更快呢?

您可以嘗試使用一對左連接來匹配(而不是不存在)

SELECT DISTINCT PI.VALUE ID
FROM PERSON_VIEW PERV
inner join PERSON_IDENT PI on PI.VALUE = PERV.IDENTITY
inner join PERSON PER on PER.ID = PI.EXTERNAL_ID
LEFT JOIN PERSON_MIGR_DATA PMD ON  PMD.RECORD_ID = PERV.RECORD_ID
LEFT JOIN PERSON_MIGR_ERRORS PME ON  PME.RECORD_ID = PERV.RECORD_ID
where PMD.RECORD_ID is null and PME.RECORD_ID is null 

暫無
暫無

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

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