Как создать индекс в столбце VARCHAR2? - PullRequest
0 голосов
/ 11 марта 2020

У меня есть две таблицы table1 и table2. Мы соединяем обе таблицы, используя условие ниже

FROM table1 
LEFT OUTER JOIN table2
ON table2.ID = tabe1.ID
AND TO_DATE(TO_CHAR(TO_TIMESTAMP(TRIM(REPLACE(EXE_TS,'IST','')),
                    'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD'),'YYYY-MM-DD')) 
    BETWEEN V_LAST_YEAR_DATE AND V_THIS_YEAR_DATE

Столбцы «Данные в идентификаторе» и «EXE_TS», как показано ниже, и оба столбца представляют собой пример идентификатора VARCHAR2 «S001» и EXE_TS »2018-12-13 09:23 : 13 IST '

Я хочу создать индекс в столбце таблицы 2, используя ORD_ID и EXE_TS. Может кто-нибудь, пожалуйста, подскажите мне, как этого добиться.

1 Ответ

2 голосов
/ 11 марта 2020

Прежде всего, эта длительная операция не нужна.

Вы можете заменить

TO_DATE(TO_CHAR(TO_TIMESTAMP(TRIM(REPLACE(EXE_TS,'IST','')),
               'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD'),
       'YYYY-MM-DD))

на

TRUNC(TO_DATE(REPLACE(EXE_TS,'IST'),'YYYY-MM-DD HH24:MI:SS'))

И вы можете создать индекс по выражению выше следующим образом:

Create index idx1
On your_table (
ord_id,
TRUNC(TO_DATE(REPLACE(EXE_TS,'IST'),'YYYY-MM-DD HH24:MI:SS'))
)

Ура !!

...