Observation: Quantified Predicate with Subselect

You coded a subselect using a quantified predicate. If possible, consider recoding the predicate using either an explicit value or a subselect that returns an atomic value.

The example below uses a quantified predicate to determine which employees have worked more overtime than is allowed for any project:

SELECT 
FIRSTNAME, 
LASTNAME, 
FROM 
EMPLOYEE 
WHERE 
OVERTIME > ANY 
(SELECT 
OVERTIME 
FROM 
PROJECT) 

If you knew that employees cannot work more than 100 hours of total overtime on any project, you can recode the statement using that explicit value, as shown below:

SELECT 
FIRSTNAME, 
LASTNAME, 
FROM 
EMPLOYEE 
WHERE 
OVERTIME > 100 

Or, in the case of predicates coded using ANY and SOME, you can reduce the subselect to an atomic value using the MIN column function, as shown below:

SELECT 
FIRSTNAME, 
LASTNAME, 
FROM 
EMPLOYEE 
WHERE 
OVERTIME > 
(SELECT 
MIN(OVERTIME) 
FROM 
PROJECT) 

Note: If there is an ascending index on OVERTIME, the subselect results in a 1-fetch index scan.

You can apply the same transformation for quantified predicates coded with ALL by using the MAX column function in the subselect. For this transformation, the subselect results in a 1-fetch index scan if there is a descending index on OVERTIME.