A predicate is a conditional expression that, combined with the logical operators AND and OR, makes up the set of conditions in a WHERE, HAVING, or ON clause. In SQL, a predicate that evaluates to UNKNOWN is interpreted as FALSE.
A predicate that can exploit an index to retrieve rows from a table is called sargable. This name comes from the phrase search argument-able. Predicates that involve comparisons of a column with constants, other columns, or expressions may be sargable.
The predicate in the following statement is sargable. SQL Anywhere can evaluate it efficiently using the primary index of the Employees table.
SELECT * FROM Employees WHERE Employees.EmployeeID = 102; |
In the best access plan, this appears as: Employees<Employees>
.
In contrast, the following predicate is not sargable. Although the EmployeeID column is indexed in the primary index, using this index does not expedite the computation because the result contains all, or all except one, row.
SELECT * FROM Employees where Employees.EmployeeID <> 102; |
In the best access plan, this appears as: Employees<seq>
.
Similarly, no index can assist in a search for all employees whose given name ends in the letter k. Again, the only means of computing this result is to examine each of the rows individually.
Discuss this page in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |