The optimizer uses check constraints (either user-added or the implicit check constraints added for the partition key) to reduce the partitions examined.
For additional information about the implicitly added partitioning key constraints see Creating partitioned tables. In the following example, assume that PAYROLL is partitioned by range:
SELECT LASTNAME, SALARY FROM PRODLIB.PAYROLL WHERE EMPNUM = :hv1
The optimizer adds new predicates to each partition in the table:
SELECT LASTNAME, SALARY FROM (SELECT LASTNAME, SALARY FROM PRODLB.PAYROLL(PART00001) WHERE EMPNUM=:hv1 AND :hv1 <= 500 UNION ALL SELECT LASTNAME, SALARY FROM PRODLB.PAYROLL(PART00002) WHERE EMPNUM=:hv1 AND :hv1 >= 501 AND :hv1 <=1000 UNION ALL SELECT LASTNAME, SALARY FROM PRODLB.PAYROLL(PART00003) WHERE EMPNUM=:hv1 AND (:hv1 IS NULL OR :hv1 >= 1001)) X (LASTNAME, SALARY)
If the value of hv1 is 603, then only the rows of partition PART00002 are examined.