Я ищу любые предложения по оптимизации следующего оператора PROC SQL из программы SAS. Две задействованные таблицы содержат около 5 миллионов записей каждая, а время выполнения составляет около 46 часов.
Оператор пытается обновить «новую» версию «старой» таблицы. Отмечая столбец, если «старая» таблица для «PK_ID» была указана без значения для «3RD_ID» и «CODE», но в «новой» таблице для «PK_ID» она теперь указана С значение для "3RD_ID" и "CODE".
Спасибо за любые предложения... (Код действительно отформатирован ниже! По некоторым причинам мои пробелы не отображаются для отступов...)
PROC SQL _METHOD;
UPDATE NEW_TABLE AS N
SET NEW_2ND_ID=(SELECT 2ND_ID FROM OLD_TABLE AS O
WHERE N.PK_ID=0.PK_ID
AND N.2ND_ID<>O.2ND_ID
AND O.3RD_ID IS NULL
AND O.CODE IS NULL
AND N.3RD_ID IS NOT NULL
AND N.CODE IS NOT NULL
AND N.2ND_ID IS NOT NULL)
WHERE N.3RD_ID IS NOT NULL
AND N.PK_ID IS NOT NULL
AND N.CODE IS NOT NULL
AND N.2ND_ID IS NOT NULL;
QUIT;