Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Рекомендация по запросу с предикантами  [new]
Den_KP
Member

Откуда:
Сообщений: 139
Добрый день!
Всех с пятничкой! Друзья, честно скажу не силен еще в запросах, так сказать падаван.
Вопрос следующий: есть 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
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
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
5 апр 19, 06:55    [21853459]     Ответить | Цитировать Сообщить модератору
 Re: Рекомендация по запросу с предикантами  [new]
-2-
Member

Откуда:
Сообщений: 14730
Den_KP
ABS("PO"."AMOUNT")=ABS(:B1)
Замени ABS= на IN
5 апр 19, 07:10    [21853461]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить