After a query is parsed and normalized, but before the optimizer begins its analysis, the query is preprocessed to increase the number of clauses that can be optimized:
Some search arguments are converted to equivalent arguments.
Some expressions used as search arguments are preprocessed to generate a literal value that can be optimized.
Search argument transitive closure is applied where possible.
Join column transitive closure is applied where possible.
For some queries that use or, additional search arguments can be generated to provide additional optimization paths.
The changes made by preprocessing are transparent unless you are examining the output of query tuning tools such as showplan, statistics io, or dbcc traceon(302). If you run queries that benefit from the addition of optimized search arguments, you see the added clauses:
In additional costing blocks for the added clauses to be optimized in dbcc traceon(302) output.
In showplan output, you may see “Keys are” messages for tables where you did not specify a search argument or a join.