在探讨subquery如 x IN (SELECT XX FROM TABLE)这样的形式的MATCH策略时,不是很清楚实现过程。在网上搜了一下,
地址:http://stackoverflow.com/questions/22300291/what-does-firstmatch-mean-in-a-explain-statement
It is a strategy that avoids the production of duplicates by short-cutting execution as soon as the first genuine match is found.
So FirstMatch(phonenumbers)
means that as soon as we have produced one matching record combination, it will short-cut the execution and jump back to the phonenumbers
table.
From FirstMatch strategy
- The FirstMatch strategy works by executing the subquery and short-cutting its execution as soon as the first match is found.
- This means, subquery tables must be after all of the parent select's tables that are referred from the subquery predicate.
- EXPLAIN shows FirstMatch as "FirstMatch(tableN)".
- The strategy can handle correlated subqueries.
- But it cannot be applied if the subquery has meaningful GROUP BY and/or aggregate functions.
- Use of the FirstMatch strategy is controlled with the firstmatch=on|off flag in the optimizer_switch variable.