разные планы объяснения для одного и того же ORACLE SQL в разных случаях - PullRequest
0 голосов
/ 23 марта 2020

Можете ли вы предложить свой совет / помощь в этом. мы находимся на ORACLE RDBMS: 12.1.0.2.0 У меня есть представление, разработанное для отчета. Я настроил его, и он быстро работает в DEV1. Я создал 2 индекса для таблицы.

Когда я запускаю тот же SQL в DEV2, он не работает быстро. Я также видел, что объяснить план для DEV1 и DEV2 разные. В DEV2 я также создал те же индексы.

Я вижу, что индекс N19 вообще не используется DEV2. (Правая часть в DEV1 (быстрая) Explain Plan и LEFT - DEV2 Explain Plan. (Медленная) )

Как заставить DEV2 убедиться, что он следует плану объяснения, аналогичному DEV2.

Это что-то для параллельной обработки?

введите описание изображения здесь

КОД SNIPPET:

WHERE     1 = 1
    AND d.approver_id = f.user_id(+)
    AND h.organization_id = d.employee_org_id
    --  AND cr.request_id = NVL (d.concurrent_request_id_scr, d.concurrent_request_id_pa)
    AND (       cr.request_id = d.concurrent_request_id_scr
            AND d.concurrent_request_id_scr IS NOT NULL
         OR (    cr.request_id = d.concurrent_request_id_pa
             AND d.concurrent_request_id_pa IS NOT NULL))
    AND d.MESSAGE IS NULL
    AND hremp.person_id = d.employee_id
    AND SYSDATE BETWEEN hremp.effective_start_date
                    AND hremp.effective_end_date
    AND hl_source.lookup_code = d.SOURCE
    AND hl_source.enabled_flag = 'Y'
    AND SYSDATE BETWEEN NVL (hl_source.start_date_active, SYSDATE)
                    AND NVL (hl_source.end_date_active, SYSDATE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...