当我编写一个根据GET参数构建MySQL请求的PHP页面时,我想知道MySQL是否对请求中的WHERE测试进行了任何重组,或者只是在它们到达时才进行测试。MySQL如何处理WHERE测试?
例如,如果我执行此请求:
SELECT * FROM `table` t WHERE (SELECT `some_value` FROM `another_table` u WHERE `t.id` = `u.id` LIMIT 1) = 10 AND `a_boolean` = 1;
显然第二测试速度更快,第一执行将过滤大量的条目,所以将有子请求更少的其他测试做。 那么,MySQL是否根据哪一个更快/将过滤最多的条目来重组测试,还是只按给定的顺序执行它们?
好的,谢谢。 EXPLAIN非常有用:) – Jukurrpa 2010-09-03 11:25:46