У меня есть этот запрос proc sql в моем текущем коде. К сожалению, я имею дело с более чем 10 миллионами записей, поэтому на выполнение уходит несколько часов. Я пытался преобразовать его в шаг данных, думая, что он будет работать намного быстрее. Тем не менее, я не могу получить те же результаты данных. Если кто-нибудь может помочь мне с шагом данных, я был бы очень признателен. Или, если у вас есть предложения о том, как я могу сделать proc sql более эффективным.
Вот мой запрос proc sql:
proc sql;
create table test as
select *
from table1 a
where exists (select 1
from table2 b
where b.acct_id = a.acct_id);
quit;
Это шаг данных, в который я пытался преобразовать его:
proc sort data=table1; by acct_id; run;
proc sort data=table2; by acct_id; run;
data test;
merge table1 (in=a)
table2 (in=b);
by acct_id;
if a and b;
run;
select * from table1 where acct_id in (select acct_id from table2)
работает быстрее? (Этот запрос может сделать намерение более понятным для планировщика запросов - надеюсь, избавит от необходимости индексации/сортировки/объединения) - person Jon Clements♦   schedule 11.04.2016