Подобрете статистическите данни. Прогнозният брой редове е 1, но действителният брой редове е над 7 милиона и се брои. Това кара плана за изпълнение да използва вложен цикъл вместо хеш присъединяване. Вложеният цикъл работи по-добре за малки количества данни, а хеш присъединяването работи по-добре за големи количества данни. Коригирането на това може да бъде толкова лесно, колкото да се гарантира, че съответните таблици имат точна, текуща статистика. Това обикновено може да стане чрез събиране на статистически данни с настройките по подразбиране, например:exec dbms_stats.gather_table_stats('SIRS_UATC1', 'TBL_RECON_PM');
.
Ако това не подобри оценката за мощността, опитайте да използвате намек за динамична извадка, като /*+ dynamic_sampling(5) */
. За такава продължителна заявка си струва да отделите малко повече време за предварително извадка на данни, ако това води до по-добър план.
Използвайте паралелизъм на ниво израз вместо паралелизъм на ниво обект. Това е може би най-честата грешка с паралелен SQL. Ако използвате паралелизъм на ниво обект, подсказката трябва да препраща към псевдоним на обекта. Тъй като 11gR2 няма нужда да се притеснявате за определяне на обекти. Това изявление се нуждае само от един намек:INSERT /*+ PARALLEL(16) APPEND */ ...
. Обърнете внимание, че NOLOGGING
не е истински намек.