If there might be NULL
values in the transaction table or the master table for the columns
that you specify in the DBKEY= data set option, use DBNULLKEYS=YES.
This is the default for most interfaces. When you specify DBNULLKEYS=YES
and also a column that is not defined as NOT NULL in DBKEY=, SAS generates
a WHERE clause that can find NULL values. For example, if you specify
DBKEY=COLUMN and COLUMN is not defined as NOT NULL, SAS generates
a WHERE clause with this syntax:
WHERE ((COLUMN = ?) OR ((COLUMN IS NULL) AND (? IS NULL)))
With this syntax SAS
can prepare the statement once and use it for any (NULL or NOT NULL)
value in the column. This syntax can potentially be much less efficient
than the shorter form of the WHERE clause below. When you specify
DBNULLKEYS=NO or a column that DBKEY= defines as NOT NULL, SAS generates
a simple WHERE clause.
If you know that there
are no NULL values in transaction or master tables for the columns
that you specify in the DBKEY= option, you can use DBNULLKEYS=NO.
This is the default for the Informix interface. If you specify DBNULLKEYS=NO
and DBKEY=COLUMN, SAS generates a shorter form of the WHERE clause,
regardless of whether the column that is specified in DBKEY= is defined
as NOT NULL.