Oracle 12C, без разделов, без ASM.
Это фон.У меня есть таблица с несколькими столбцами, 3 из которых -
TRAN_DATE DATE
TRAN_TIME TIMESTAMP(6)
FINAL_DATETIME NOT NULL TIMESTAMP(6)
В таблице около 70 миллионов записей.То, что я хочу сделать, - это объединить поле tran_date и tran_time и обновить поле final_datetime с этим выводом для всех 70 миллионов записей.
Это мой запрос -
update MYSCHEMA.MYTAB set FINAL_DATETIME = (to_timestamp( (to_char(tran_date, 'YYYY/MM/DD') || ' ' ||to_char(TRAN_TIME,'HH24MISS') ), 'YYYY-MM-DD HH24:MI:SS.FF'))
Например:
В настоящее время (для одной записи)
TRAN_DATE=01-DEC-16
TRAN_TIME=01-JAN-70 12.35.58.000000 AM /*I need only the time part from this*/
FINAL_DATETIME=22-OCT-18 04.37.18.870000 PM
Отправьте запрос - для FINAL_DATETIME должно быть
01-DEC-16 12.35.58.000000 AM
Для to_timestamp
требуется 2 символастроки, и я боюсь, что это сильно замедлит обновление.Есть предложения?
Что еще можно сделать, чтобы повысить производительность?Никто больше не будет использовать таблицу в этот момент, поэтому у меня есть возможность
Любая помощь приветствуется.