INDEX Statement |
The INDEX statement creates an index for the named variables in the current input SAS data set. An index is created for each variable listed, provided that the variable does not already have an index. Current retrieval is set to the last variable indexed. Subsequent I/O operations such as LIST, READ, FIND, and DELETE can use this index to retrieve observations from the data. The indices are automatically updated when a data set is edited with the APPEND, DELETE, or REPLACE statements. Only one index is in effect at any given time. The SHOW CONTENTS command indicates which index is in use.
For example, the following statements copy the Sasuser.Class data set and create indexes for the Name and Sex variables. Current retrieval is set to use the Sex variable, as shown in Figure 23.138.
data class; set sashelp.class; run;
proc iml; use class; index name sex; list all; close class;
OBS Name Sex Age Height Weight ------ -------- --- --------- --------- --------- 2 Alice F 13.0000 56.5000 84.0000 3 Barbara F 13.0000 65.3000 98.0000 4 Carol F 14.0000 62.8000 102.5000 7 Jane F 12.0000 59.8000 84.5000 8 Janet F 15.0000 62.5000 112.5000 11 Joyce F 11.0000 51.3000 50.5000 12 Judy F 14.0000 64.3000 90.0000 13 Louise F 12.0000 56.3000 77.0000 14 Mary F 15.0000 66.5000 112.0000 1 Alfred M 14.0000 69.0000 112.5000 5 Henry M 14.0000 63.5000 102.5000 6 James M 12.0000 57.3000 83.0000 9 Jeffrey M 13.0000 62.5000 84.0000 10 John M 12.0000 59.0000 99.5000 15 Philip M 16.0000 72.0000 150.0000 16 Robert M 12.0000 64.8000 128.0000 17 Ronald M 15.0000 67.0000 133.0000 18 Thomas M 11.0000 57.5000 85.0000 19 William M 15.0000 66.5000 112.0000 |
The INDEX NONE statement can be used to set retrieval back to physical order.
When a WHERE clause is being processed, the SAS/IML language automatically determines which index to use, if any. The decision is based on the variables and operators involved in the WHERE clause, and the decision criterion is based on the efficiency of retrieval.