If your table reference
is eligible for threaded Reads (that is, if it is a read-only LIBNAME
table reference), DBSLICE= forces a threaded Read to occur. This partitions
the table with the WHERE clauses that you supply. Use DBSLICE= when
SAS is unable to generate threaded Reads automatically, or if you
can provide better partitioning.
DBSLICE= is appropriate
for experienced programmers familiar with the layout of their DBMS
tables. A well-tuned DBSLICE= specification usually outperforms SAS
automatic partitioning. For example, a well-tuned DBSLICE= specification
might better distribute data across threads by taking advantage of
a column that
SAS/ACCESS cannot use when it automatically generates
partitioning WHERE clauses.
DBSLICE= delivers optimal
performance for DB2 under UNIX and for Microsoft SQL Server. Conversely,
DBSLICE= can degrade performance compared to automatic partitioning.
For example, Teradata starts the FastExport Utility for automatic
partitioning. If DBSLICE= overrides this action, WHERE clauses are
generated instead. Even with well planned WHERE clauses, performance
is degraded because FastExport is considerably faster.
CAUTION:
When using
DBSLICE=, you are responsible for data integrity. If your WHERE clauses
omit rows from the result set or retrieves the same row on more than
one thread, your input DBMS result set is incorrect and your SAS program
generates incorrect results.