Autopartitioning Scheme for Informix

Overview

Autopartitioning for SAS/ACCESS Interface to Informix is a modulo (MOD) function method. For general information about this feature, see Autopartitioning Techniques in SAS/ACCESS.

Autopartitioning Restrictions

SAS/ACCESS Interface to Informix places additional restrictions on the columns that you can use for the partitioning column during the autopartitioning phase. Here is how columns are partitioned.
  • INTEGER
  • SMALLINT
  • BIT
  • TINYINT
  • You can also use DECIMALS with 0-scale columns as the partitioning column.
  • Nullable columns are the least preferable.

Using WHERE Clauses

Autopartitioning does not select a column to be the partitioning column if it appears in a SAS WHERE clause. For example, the following DATA step cannot use a threaded Read to retrieve the data because all numeric columns in the table are in the WHERE clause:
data work.locemp;
set trlib.MYEMPS;
where EMPNUM<=30 and ISTENURE=0 and
 SALARY<=35000 and NUMCLASS>2;
run;

Using DBSLICEPARM=

Although SAS/ACCESS Interface to Informix defaults to three threads when you use autopartitioning, do not specify a maximum number of threads in DBSLICEPARM= LIBNAME option to use for the threaded Read.
This example shows how to use of DBSLICEPARM= with the maximum number of threads set to five:
libname x informix user=dbitest using=dbigrp1 server=odbc15;
proc print data=x.dept(dbsliceparm=(ALL,5));
run; 

Using DBSLICE=

You can achieve the best possible performance when using threaded Reads by specifying the DBSLICE= data set option for Informix in your SAS operation. This example shows how to use it.
libname x informix user=dbitest using=dbigrp1 server=odbc15;
data xottest;
set x.invoice(dbslice=("amtbilled<10000000" "amtbilled>=10000000"));
run;