考虑sales
包含超过10M记录的两种场景,一条记录50字节:
场景一:
data STORE.sale;
set work.sale;
run;
proc copy in = work out = STORE;
select sale;
run;
场景二:
data STORE.sale;
set FACTORY.sale;
run;
proc copy in = FACTORY out = STORE;
select sale;
run;
在这两种情况下,是否有理由选择一种方式而不是另一种方式?
最佳答案
选择过程副本。除了速度更快(无需分页数据并通过 PDV 馈送)之外,它还将保留您的索引(并且可以配置为使用 CONSTRAINT=YES 选项保留完整性约束)
如果 set 语句中的源实际上是 VIEW,您可能希望使用数据步骤来保留该时间点的目标值。
总结一下:
Proc copy 将复制数据集(认为复制/粘贴)。值无法修改。
数据步骤将重建数据集(一次一条记录)值可以同时修改。
关于sas - proc copy 和 data step 的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26402054/