I have a question regarding the best placement of filters in a query. For example, a number of queries that we deal with each day involve filtering out data by a certain identifier and a most recent date value. Many joins are usually involved, including multiple joins to the same table (to get, say, values from different time periods into the resultset). A date filter can be placed in the JOIN (...ON i.ID = p.ID AND p.PricingDate = (SELECT MAX(PricingDate) FROM PriceHistory WHERE ID = p.ID) or in the main SELECT's WHERE clause. (WHERE p.PricingDate = (SELECT MAX(PricingDate) FROM PriceHistory WHERE ID = p.ID) The base tables are mostly under 1 million rows but a few can get up to the 10-20 million row range. All have proper primary/foreign keys on the join columns. I know that SQL performance is rife with variables between hardware and software, but is there a "best practice" that says one way is better that the other in reducing the amount of data consumed as early as possible to arrive at the final resultset? Thanks!