data a(keep=x1);
set table(keep=x1 where=(x1>100));
run;
data b;
set table;
where x1>100;
keep x1;
run;
两种写法的效率一样吗?
个人意见,望指正和讨论;
个人认为两种写法效率应该一样。
表a:
编译时,sas识别出程序涉及到的变量只有x1, 因此只读入x1字段值 并在读入时用where条件筛选;
表b:
碰到run语句后,进行编译,程序中涉及到的变量只有 x1 因此读table时也只会读这个字段而忽略别的字段;在写入时判断where条件。
由于不管读入时判断还是写时判断,都要对x1先读取,再考虑到是逐条记录读取和输出,因此where影响不存在。



雷达卡






京公网安备 11010802022788号







