Hi @CuriousCanDo
It's faster and cheaper compute if you use either LOWCASE() or UPCASE() function to convert the case of the static string you searching for in order to match the stored text case in your data set. Single conversion instead of 25 Millions as it is in your case!
Using the msglevel=I option would indicate if an index being used for the WHERE clause evaluation. I'll borrow the sample code @yabwon had in his reply for illustration
options msglevel=i fullstimer;
data have(index=(text));
input text $;
cards;
ABC
BAC
BCA
BBC
BCC
CAB
;
run;
%let srch_str = ab;
data want;
set have;
where index(lowcase(strip(text)), "&srch_str");
run;
proc print;
run;
/* Convert search string to upcase to match the stored data */
%let srch_str = %upcase(ab);
proc sql;
create table want as
select * from have
where text like ("&srch_str%");
quit;
data want;
set have;
where text=: "&srch_str";
run;
proc print;
run;
Hope this helps
... View more