Достижение эффективного уровня производительности запроса - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть нижеприведенный оракульный запрос. Посоветуйте, пожалуйста, как мне сделать его более эффективным, чтобы он улучшился, дайте мне знать, если я что-то упустил, так как я новичок, любая ранняя помощь будет очень полезной.ценится

ниже приведен план запроса, пожалуйста, посоветуйте, как его улучшить

Plan hash value: 44516869

---------------------------------------------------------------------------------------------------
| Id  | Operation                     | Name              | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT              |                   |  1099 | 39564 |  3770   (1)| 00:00:46 |
|*  1 |  HASH JOIN                    |                   |  1099 | 39564 |  3770   (1)| 00:00:46 |
|   2 |   NESTED LOOPS                |                   |       |       |            |          |
|   3 |    NESTED LOOPS               |                   |  1095 | 32850 |  3345   (1)| 00:00:41 |
|   4 |     TABLE ACCESS FULL         | BUSINESS_CONTACTS |  1666 | 14994 |    11   (0)| 00:00:01 |
|*  5 |     INDEX UNIQUE SCAN         | PERSON_PK         |     1 |       |     

1 Ответ

0 голосов
/ 24 ноября 2018

Во-первых, вы можете переписать запрос, используя правильный, явный, стандартный JOIN синтаксис и без подзапросов.Я считаю, что запрос:

select p.business_name as Aggregator_Name, 
       pc.business_name as Child_Business_Name, 
       bc.IDV_STATUS 
from business_contacts bc join
     person p
     on bc.person_id = p.person_id join
     person pc
     on pc.parent_person_id = p.person_id;

Тогда для этого запроса вы хотите индексы на person(person_id, business_name) и person(parent_person_id, business_name).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...