[英]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.