IDXBY= Data Set Option

Specifies whether to use an index when processing BY statements in the SPD Engine.
Valid in: DATA step and PROC step
Default: YES
Engine: SPD Engine only

Syntax

IDXBY=YES | NO

Required Arguments

YES
uses an index when processing indexed variables in a BY statement.
Note: If the BY statement specifies more than one variable or the DESCENDING option, then the index is not used, even if IDXBY=YES.
NO
does not use an index when processing indexed variables in a BY statement.
Note:IDXBY=NO performs an automatic sort when processing a BY statement.

Details

When you use the IDXBY= data set option, make sure that you use the BYSORT=YES option and that the BY variable is indexed.
In some cases, you might get better performance from the SPD Engine if you automatically sort the data. To use the automatic sort, BYSORT=YES must be set and you should specify IDXBY=NO.
Set the SAS system option MSGLEVEL=I so that the BY processing information is written to the SAS log. When you use the IDXBY= data set option and the BYSORT=YES option, the following messages are written to the SAS log:
  • If IDXBY=YES and there is an index on the BY variable, the index is used to order the rows of the table. The following message is written to the SAS log:
     NOTE: BY ordering was produced by using an index for
           table tablename.
  • If IDXBY=NO, the following message is written to the SAS log:
    NOTE: BY ordering was produced by performing an automatic sort
          on table tablename. 

Examples

Example 1: Using the IDXBY=NO Data Set Option

options msglevel=i;
proc means data=permdata.customer(IDXBY=no);
   by sales;
   by state;
run;
The following message is written to the SAS log:
NOTE: BY ordering was produced by performing an automatic sort
      on table PERMDATA.customer.
NOTE: There were 2981 observations read from the data set
      PERMDATA.CUSTOMER.

Example 2: Using the IDXBY=YES Data Set Option

proc means data=permdata.customer(IDXBY=yes);
   var sales;
   by state;
run;
The following message is written to the SAS log:
NOTE: BY ordering was produced by using an index for table
      PERMDATA.customer.
NOTE: There were 2981 observations read from the data set
      PERMDATA.CUSTOMER.