Hi Christophe,

> Considering the following simple query :
> 
> SELECT * FROM Status WHERE DWProcessed = 0 AND PreviousStatus NOT IN
> ('PENDING', 'ACCEPTED') AND SubscribeDate < DATE_SUB(NOW(), INTERVAL 24
> HOUR);
> 
> Which of these filters are processed first ?
> 
> I'd like the first filter (DWProcessed / Lowest cardinality and indexed)
> being processed first, but I can't really find any useful information
> about this .
> 
> Is there any performance impact on query processing, about the order of
> WHERE clauses ?


When a MySQL server receives a query, it goes through a process called query 
optimization and tries to determine the best way to execute it (based on 
availability of indexes etc).  You can think of this as similar to how GPS 
software picks the fastest route - it is very similar.

The order of the WHERE clause does not matter, and in fact more complicated 
transformations happen in query optimization automatically.  For Example:
SELECT * FROM Status WHERE 1=1 AND DWProcessed = 0;

1=1 is detected as a tautology and removed.
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql

Reply via email to