我正在寻找任何建议来优化SAS程序中的以下PROC SQL语句。涉及的两个表格每个包含约500万条记录,运行时间约为46个小时。优化SQL UPDATE语句所需的建议。使用两百万条记录表
该声明正在寻找更新“旧”表的“新”版本。如果对于“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;
在PK_ID,2ND_ID和3RD_ID上的两个表上都有简单的索引,以及两者上都有一个复合索引,包含所有这三个索引。 – whitespy9 2010-01-28 14:35:07
当您找到“工作”解决方案时让我知道 – Pentium10 2010-01-28 17:35:20