Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Рекомендация по запросу с предикантами / 2 сообщений из 2, страница 1 из 1
05.04.2019, 06:55
    #39796909
Den_KP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекомендация по запросу с предикантами
Добрый день!
Всех с пятничкой! Друзья, честно скажу не силен еще в запросах, так сказать падаван.
Вопрос следующий: есть 2 запроса которые генерят резкую кратковременную нагрузку, по рекомендации oem tuning advisor, вышло следующее:
1-й джоб:
The predicate ABS("PO"."AMOUNT")=ABS(:B1) used at line ID 6 of the execution plan contains an expression on indexed column "AMOUNT". This expression prevents the optimizer from selecting indices on table "KKB_EXCH"."PARTNER_OPERATIONS".

2-й Джоб
The predicate ABS("OO"."AMOUNT")=ABS(:B1) used at line ID 6 of the execution plan contains an expression on indexed column "AMOUNT". This expression prevents the optimizer from selecting indices on table "KKB_EXCH"."OW4_OPERATIONS".

Вопрос: Как можно выполнить рекомендацию, непонятен момент как избавиться от этого, нужно ли, и можно ли понять benefit до начала рекомендации?

Джобы:
№1
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
SELECT  PO.OPERATION_ID
FROM    PARTNER_OPERATIONS PO
WHERE   PO.IS_ARCH              = 0
        AND PO.OPER_TYPE        = :B6
        AND PO.REQUEST_CATEGORY = 'Advice'
        AND PO.SKVIT_STATUS     = 2
        AND
        (
                (
                        :B4 IS NULL
                )
                OR
                (
                        (
                                (
                                        (
                                                :B5 = 1
                                        )
                                        AND PO.OPER_DATE <= :B4
                                )
                                OR
                                (
                                        PO.OPER_DATE = :B4
                                )
                        )
                )
        )
        AND
        (
                (
                        PO.RRN IS NULL
                )
                OR
                (
                        PO.RRN = :B3
                )
        )
        AND
        (
                (
                        PO.SRN IS NULL
                )
                OR
                (
                        PO.SRN = :B2
                )
        )
        AND ABS(PO.AMOUNT) = ABS(:B1 )
        AND ROWNUM         = 1



№2
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
SELECT  OO.OPERATION_ID
FROM    OW4_OPERATIONS OO
WHERE   OO.IS_ARCH              = 0
        AND OO.OPER_TYPE        = :B6
        AND OO.REQUEST_CATEGORY = 'Advice'
        AND OO.SKVIT_STATUS     = 2
        AND
        (
                (
                        :B4 IS NULL
                )
                OR
                (
                        (
                                (
                                        (
                                                :B5 = 1
                                        )
                                        AND OO.LOCAL_DATE <= :B4
                                )
                                OR
                                (
                                        OO.LOCAL_DATE = :B4
                                )
                        )
                )
        )
        AND
        (
                (
                        OO.RRN IS NULL
                )
                OR
                (
                        OO.RRN = :B3
                )
        )
        AND
        (
                (
                        OO.ARN IS NULL
                )
                OR
                (
                        OO.ARN = :B2
                )
        )
        AND ABS(OO.AMOUNT) = ABS(:B1 )
        AND ROWNUM         = 1
...
Рейтинг: 0 / 0
05.04.2019, 07:10
    #39796911
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекомендация по запросу с предикантами
Den_KPABS("PO"."AMOUNT")=ABS(:B1)Замени ABS= на IN
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Рекомендация по запросу с предикантами / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]