У меня есть следующий код:
UPDATE tableOne
SET columnOne = CASE
WHEN tableOne.columnTwo LIKE '%-02-%' OR tableOne.columnTwo LIKE '%-03-%' OR
tableOne.columnTwo LIKE '%-04-%' OR
tableOne.columnTwo LIKE '%-05-%' OR
tableOne.columnTwo LIKE '%-06-%' OR
tableOne.columnTwo LIKE '%-07-%' OR tableOne.columnTwo LIKE '%-08-%' OR
tableOne.columnTwo LIKE '%-09-%'
THEN tableTwo.columnOne :: text
ELSE tableOne.columnOne
END
FROM tableTwo
WHERE tableTwo.tableId = tableOne.tableId
У меня есть две таблицы. tableOne
состоит из 100 миллионов строк (и 40 столбцов), а tableTwo
состоит из 90 миллионов строк. Выше запрос уже выполняется в течение более 2 дней. Я не уверен, что это когда-нибудь закончится. Есть ли способ оптимизировать запрос?
Если полезно LIKE
делает следующее:
Проверяет, указан ли в строке (например, 2018-06-30 08:20:17
) месяц. Если да, выберите значение из tableTwo
(и CAST, чтобы набрать text
), в противном случае оставьте значение self (уже наберите text
).