<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: slow speed using fedsql in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/959432#M374329</link>
    <description>&lt;P&gt;Hey&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/127222"&gt;@acordes&lt;/a&gt;! If you are working in a distributed CAS environment, you can try to make the small tables repeated tables prior to the join on the big table. This copies all rows of the small tables to all CAS nodes. This reduces the amount of shuffling needed, especially when joining a big table with small tables. I don't know if this will work in your case but it's worth a shot to see if it improves speed. For the DATA Step, this is the&amp;nbsp;&lt;STRONG&gt;duplicate=yes&lt;/STRONG&gt; option. For PROC CASUTIL or the loadTable action, this is the&amp;nbsp;&lt;STRONG&gt;repeat&lt;/STRONG&gt; option.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Examples:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data public.small(duplicate=yes);
    set small;
run;

proc casutil;
    load data=small outcaslib='public' repeat;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For more information on this, see:&amp;nbsp;&lt;A href="https://communities.sas.com/t5/SAS-Communities-Library/CAS-data-distribution-DUPLICATE-a-REPLICATION-using-COPIES-Can/ta-p/368796" target="_self"&gt;CAS data distribution: DUPLICATE a REPLICATION using COPIES. Can you REPEAT?&lt;/A&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 18 Feb 2025 03:02:09 GMT</pubDate>
    <dc:creator>Stu_SAS</dc:creator>
    <dc:date>2025-02-18T03:02:09Z</dc:date>
    <item>
      <title>slow speed using fedsql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/959384#M374312</link>
      <description>&lt;P&gt;I wonder why my query takes nearly 4 minutes for completion.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It's the part of my code which performs slowest despite using exclusively castables and fedsql.&lt;/P&gt;
&lt;P&gt;Only the left most table has over 1 million rows, the other tables are aggregation tables.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What should I do to speed up this query?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

%let outcas=casuser;

proc cas;
source ETL_AC;
		create table PUBLIC.X_TEST1{options replace=true} as 
			select a.*, b.Mean as mean_recipe, b.Std as std_recipe,
						c.Mean as mean_batch_id, c.Std as std_batch_id,
						d._NDis_ as _NDis_batch_id,
						e._NDis_ as _NDis_recipe		
               from PUBLIC.X_TEST a 
					left join &amp;amp;outcas..SUMMARY_A1 b 
						on a.RECIPE=b.RECIPE and a._NAME_=b.column
					left join &amp;amp;outcas..SUMMARY_A2 c 
						on a.batch_id=c.batch_id and a._NAME_=c.column
					left join &amp;amp;outcas..NDIST_A2 d 
						on a.batch_id=d.batch_id and a._NAME_=d._column_
					left join &amp;amp;outcas..NDIST_A1 e 
						on a.recipe=e.recipe and a._NAME_=e._column_    ;
endsource;
fedSQL.execDirect / query=ETL_AC
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;My log states:&lt;/P&gt;
&lt;P&gt;I don't understand the timestamp comment. Is it the culprit of the poor performance?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;NOTE: CASDAL driver. Creation of a TIMESTAMP column has been requested, but is not supported by the CASDAL driver. A DOUBLE 
      PRECISION column will be created instead. A DATETIME format will be associated with the column.
NOTE: CASDAL driver. Creation of a TIMESTAMP column has been requested, but is not supported by the CASDAL driver. A DOUBLE 
      PRECISION column will be created instead. A DATETIME format will be associated with the column.
NOTE: CASDAL driver. Creation of a TIMESTAMP column has been requested, but is not supported by the CASDAL driver. A DOUBLE 
      PRECISION column will be created instead. A DATETIME format will be associated with the column.
NOTE: CASDAL driver. Creation of a TIMESTAMP column has been requested, but is not supported by the CASDAL driver. A DOUBLE 
      PRECISION column will be created instead. A DATETIME format will be associated with the column.
NOTE: CASDAL driver. Creation of a TIMESTAMP column has been requested, but is not supported by the CASDAL driver. A DOUBLE 
      PRECISION column will be created instead. A DATETIME format will be associated with the column.
NOTE: CASDAL driver. Creation of a TIMESTAMP column has been requested, but is not supported by the CASDAL driver. A DOUBLE 
      PRECISION column will be created instead. A DATETIME format will be associated with the column.
NOTE: CASDAL driver. Creation of a TIMESTAMP column has been requested, but is not supported by the CASDAL driver. A DOUBLE 
      PRECISION column will be created instead. A DATETIME format will be associated with the column.
NOTE: CASDAL driver. Creation of a TIMESTAMP column has been requested, but is not supported by the CASDAL driver. A DOUBLE 
      PRECISION column will be created instead. A DATETIME format will be associated with the column.
NOTE: Table X_TEST1 was created in caslib Public with 1295986 rows returned.
NOTE: PROCEDURE CAS used (Total process time):
      real time           3:58.86
      cpu time            0.43 seconds&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 17 Feb 2025 17:23:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/959384#M374312</guid>
      <dc:creator>acordes</dc:creator>
      <dc:date>2025-02-17T17:23:07Z</dc:date>
    </item>
    <item>
      <title>Re: slow speed using fedsql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/959432#M374329</link>
      <description>&lt;P&gt;Hey&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/127222"&gt;@acordes&lt;/a&gt;! If you are working in a distributed CAS environment, you can try to make the small tables repeated tables prior to the join on the big table. This copies all rows of the small tables to all CAS nodes. This reduces the amount of shuffling needed, especially when joining a big table with small tables. I don't know if this will work in your case but it's worth a shot to see if it improves speed. For the DATA Step, this is the&amp;nbsp;&lt;STRONG&gt;duplicate=yes&lt;/STRONG&gt; option. For PROC CASUTIL or the loadTable action, this is the&amp;nbsp;&lt;STRONG&gt;repeat&lt;/STRONG&gt; option.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Examples:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data public.small(duplicate=yes);
    set small;
run;

proc casutil;
    load data=small outcaslib='public' repeat;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For more information on this, see:&amp;nbsp;&lt;A href="https://communities.sas.com/t5/SAS-Communities-Library/CAS-data-distribution-DUPLICATE-a-REPLICATION-using-COPIES-Can/ta-p/368796" target="_self"&gt;CAS data distribution: DUPLICATE a REPLICATION using COPIES. Can you REPEAT?&lt;/A&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 18 Feb 2025 03:02:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/959432#M374329</guid>
      <dc:creator>Stu_SAS</dc:creator>
      <dc:date>2025-02-18T03:02:09Z</dc:date>
    </item>
    <item>
      <title>Re: slow speed using fedsql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/959437#M374332</link>
      <description>&lt;P&gt;If the relationship of table&amp;nbsp;PUBLIC.X_TEST to the lookup tables is many:1 (or zero) then using a data step with hash lookups could perform better.&amp;nbsp;&lt;BR /&gt;&lt;A href="https://communities.sas.com/t5/SAS-Communities-Library/CAS-Table-Lookup-Left-Outer-Join-on-SAS-Viya/ta-p/830405" target="_self"&gt;CAS Table Lookup (Left Outer Join) on SAS Viya&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;As long as the base table and the target table are in CAS the source for the hash tables doesn't need to be a CAS table for the process to execute in CAS.&lt;/P&gt;
&lt;P&gt;Below untested code - but should be close.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let outcas=casuser;

data PUBLIC.X_TEST1(drop=_rc);
    if _N_ = 1 then do;
        /* create variables */
        if 0 then
          do;
            set 
              PUBLIC.X_TEST
              &amp;amp;outcas..SUMMARY_A1(keep=column mean Std  rename=(column=_name_   mean=mean_recipe   Std=std_recipe))
              &amp;amp;outcas..SUMMARY_A2(keep=column Mean Std  rename=(column=_name_   Mean=mean_batch_id Std=std_batch_id))
              &amp;amp;outcas..NDIST_A2  (keep=_column_ _NDis_  rename=(_column_=_name_ _NDis_=_NDis_batch_id))
              &amp;amp;outcas..NDIST_A1  (keep= _column_ _NDis_ rename=(_column_=_name_ _NDis_=_NDis_recipe))
              ;
          end;
        /* define hash tables */
        declare hash h_summary_a1(dataset: "&amp;amp;outcas..SUMMARY_A1(rename=(column=_name_ mean=mean_recipe Std=std_recipe))");
        h_summary_a1.defineKey('RECIPE', '_name_');
        h_summary_a1.defineData('mean_recipe', 'std_recipe');
        h_summary_a1.defineDone();

        declare hash h_summary_a2(dataset: "&amp;amp;outcas..SUMMARY_A2(rename=(column=_name_ Mean=mean_batch_id Std=std_batch_id))");
        h_summary_a2.defineKey('batch_id', '_name_');
        h_summary_a2.defineData('mean_batch_id', 'std_batch_id');
        h_summary_a2.defineDone();

        declare hash h_ndist_a2(dataset: "&amp;amp;outcas..NDIST_A2(rename=(_column_=_name_ _NDis_=_NDis_batch_id))");
        h_ndist_a2.defineKey('batch_id', '_name_');
        h_ndist_a2.defineData('_NDis_batch_id');
        h_ndist_a2.defineDone();

        declare hash h_ndist_a1(dataset: "&amp;amp;outcas..NDIST_A1(rename=(_column_=_name_ _NDis_=_NDis_recipe))");
        h_ndist_a1.defineKey('recipe', '_name_');
        h_ndist_a1.defineData('_NDis_recipe');
        h_ndist_a1.defineDone();
    end;
    call missing(of _all_);

    set PUBLIC.X_TEST;

    /* lookup */
    _rc = h_summary_a1.find();
    _rc = h_summary_a2.find();
    _rc = h_ndist_a2.find();
    _rc = h_ndist_a1.find();

run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;I don't know how exactly this works but I have been told that as long as you only load the hash table without any further write operations (hash.add() etc.) there will only be a single instance of the hash table and not a copy per node.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 18 Feb 2025 06:14:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/959437#M374332</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2025-02-18T06:14:36Z</dc:date>
    </item>
    <item>
      <title>Re: slow speed using fedsql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/959463#M374352</link>
      <description>&lt;P&gt;Thanks&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/61362"&gt;@Stu_SAS&lt;/a&gt;&amp;nbsp;, I've applied your trick. Nevertheless, the run time is more or less the same.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 18 Feb 2025 10:31:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/959463#M374352</guid>
      <dc:creator>acordes</dc:creator>
      <dc:date>2025-02-18T10:31:43Z</dc:date>
    </item>
    <item>
      <title>Re: slow speed using fedsql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/959573#M374370</link>
      <description>This sounds insanely slow. A corresponding join in PROC SQL would be done in under lets say 20 seconds. What happens if you try the query in SAS Compute?</description>
      <pubDate>Wed, 19 Feb 2025 08:49:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/959573#M374370</guid>
      <dc:creator>LinusH</dc:creator>
      <dc:date>2025-02-19T08:49:03Z</dc:date>
    </item>
    <item>
      <title>Re: slow speed using fedsql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/959578#M374372</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/127222"&gt;@acordes&lt;/a&gt;&amp;nbsp;If you look into the link I've shared earlier you can see that FedSQL might not perform very well.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you don't want to try the SAS data step with hash lookups then I'd suggest that you at least change your SQL along left joins with the same sort order.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Patrick_0-1739958440589.png" style="width: 520px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/104743iBF6AE1578E7206E6/image-dimensions/520x199?v=v2" width="520" height="199" role="button" title="Patrick_0-1739958440589.png" alt="Patrick_0-1739958440589.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Depending on how data is distributed over the worker nodes, data movement between nodes can consume quite a bit of time.&lt;/P&gt;
&lt;P&gt;I have my doubts but who knows may-be the CAS is smart enough to move data blocks only once if there are two consecutive left joins that require the same sort order.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also consider to run your FedSQL with the method option to get an idea how the query is performed. I would hope that at least your small tables use hash join.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Patrick_1-1739959033037.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/104744i17299DEA7F397CE0/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Patrick_1-1739959033037.png" alt="Patrick_1-1739959033037.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 19 Feb 2025 09:58:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/959578#M374372</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2025-02-19T09:58:38Z</dc:date>
    </item>
    <item>
      <title>Re: slow speed using fedsql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/959824#M374454</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13674"&gt;@LinusH&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12447"&gt;@Patrick&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/61362"&gt;@Stu_SAS&lt;/a&gt;&amp;nbsp;Thanks to your advices.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I haven't tried the hash option, because I refrain from learning it &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The best result in terms of speed comes from defining a customized action that, within the builtin action set,&amp;nbsp; combines an aggregate action and a fedsql.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I share the code. Some variables of the right joined table in my problem statement are still missing, but I don't expect big performance issues.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I would say that I cut the execution time by factor 0.2.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;cas mySession sessopts=(caslib="casuser");
/*create an action set called tblMakers*/
%let _sv_quotelenmax=%sysfunc(getoption(quotelenmax));
options noquotelenmax;
proc cas;
  builtins.defineActionSet / 
    name="aggregator" 
    type="CASL"
    actions={
      {
        name="aggr" 
		desc="Return aggregation"
		parms={
		{name="caslib" type="string" required=TRUE}
		{name="table" type="string" required=TRUE}
		{name="var1" type="string" required=TRUE}
		{name="type1" type="string" required=TRUE}
		{name="type2" type="string" required=false}
		{name="gr1" type="string" required=TRUE}
		{name="gr2" type="string" required=false}
		{name="clause" type="string" required=false}
              }
definition=
" 
if exists('Clause') then whereClause=catx(' ','where',whereClause);
            else Clause='1=1';
aggregation.aggregate /
    table={ name=table,
caslib=caslib, 
where=clause,
groupby={gr1, gr2}
}, 
casout={name='_have', replace=true}
varspecs={
{summarySubset={type1}, Name='measurement', columnnames={'_' || type1 || '_'}}, 
{summarySubset={type2}, Name='measurement', columnnames={'_' || type2 || '_'}}
}, 
savegroupbyraw=true, savegroupbyformat=false, raw=false;
"
}

      {
        name="joiner" 
        parms={ {name="tblName" type="STRING" required=True}
				{name="table" type="STRING" required=True}
				{name="caslib" type="STRING" required=True}	
				{name="type1" type="string" required=false}
				{name="type2" type="string" required=false}	
				{name="gr1" type="string" required=TRUE}
				{name="gr2" type="string" required=false}
                {name="whereClause" type="STRING" required=False}
              } 
        definition=
          " if exists('whereClause') then whereClause=catx(' ','where',whereClause);
            else whereClause='';
            fedSQL.execDirect / query='create table casuser.'||tblName||' {options replace=true} as
              select a.*, _'||type1||'_, _'||type2||'_
              from '||caslib||'.'||table||' a inner join CASUSER._have b on a.'||gr1||'=b.'||gr1||' and a.'||gr2||'=b.'||gr2||' ';
          "
      }
    };
run;

options &amp;amp;_sv_quotelenmax;

%let t1=std;
%let t2=mean;
%let g1=recipe;
%let g2=_name_;

/* run the tblMakers.tableCreateParam Action */
proc cas;
  aggregator.aggr / table="TTT" caslib="public" var1="measurement" type1="&amp;amp;t1" type2="&amp;amp;t2" gr1="&amp;amp;g1" gr2="&amp;amp;g2" clause="datepart(datetime) &amp;gt; '13feb2025'd" ;
  aggregator.joiner / tblName="want3" table="TTT" type1="&amp;amp;t1" type2="&amp;amp;t2" gr1="&amp;amp;g1" gr2="&amp;amp;g2" caslib="public";
run;

PROC CAS;
  table.fetch / table={ caslib="casuser" name="want3", VARS={"&amp;amp;g1", "&amp;amp;g2", "_&amp;amp;t1._", "_&amp;amp;t2._"}} to=5000;
RUN;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 20 Feb 2025 20:07:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/959824#M374454</guid>
      <dc:creator>acordes</dc:creator>
      <dc:date>2025-02-20T20:07:08Z</dc:date>
    </item>
    <item>
      <title>Re: slow speed using fedsql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/959882#M374477</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/127222"&gt;@acordes&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN&gt;I haven't tried the hash option, because I refrain from learning it&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Well, your decision but you're certainly missing out. It's not that hard to understand.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 21 Feb 2025 02:47:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/959882#M374477</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2025-02-21T02:47:47Z</dc:date>
    </item>
    <item>
      <title>Re: slow speed using fedsql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/960396#M374570</link>
      <description>&lt;P&gt;I've found the culprit for the slow performance.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;One of the columns had a length of 32167 ! despite only holding values at length 21 as maximum.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now I've changed to varchar in a previous data step where I create the column.&lt;/P&gt;
&lt;P&gt;Thanks for your help.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 27 Feb 2025 12:54:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/960396#M374570</guid>
      <dc:creator>acordes</dc:creator>
      <dc:date>2025-02-27T12:54:25Z</dc:date>
    </item>
    <item>
      <title>Re: slow speed using fedsql</title>
      <link>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/960430#M374573</link>
      <description>Ahhh yep, that'll do it! That table was much bigger than it should've been. Always good to use varchar where possible to help with this!</description>
      <pubDate>Thu, 27 Feb 2025 17:14:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/slow-speed-using-fedsql/m-p/960430#M374573</guid>
      <dc:creator>Stu_SAS</dc:creator>
      <dc:date>2025-02-27T17:14:46Z</dc:date>
    </item>
  </channel>
</rss>

