Я перенесу человека из представления в свою базу данных по следующему запросу, который слишком медленный:
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
- идентификатор мигрированных людей и PERSON_MIGR_ERRORS
- идентификатор записей с человеком, который не прошел проверку во время миграции.
Я думаю, что НЕ СУЩЕСТВУЮЩЕЕ является узким местом. Но как сделать этот запрос так, чтобы он был быстрее?