The way that we have to attack that data depends on the circumstances and conditions under which we have to fight the battle. Our attack will depend on the amount of data from which we retrieve our result set and on our forces (the filtering criteria), together with the volume of the data to be retrieved.
• A confused query can confuse the optimizer. Clarity and suggested joins can help the optimizer provide good performance.
• To reduce the sensitivity of queries to increases in the volume of data, operate only on the data that is strictly necessary at the deeper levels of a query. Keep ancillary joins for the outer level.
• There is no need to code explicitly what the database performs implicitly.