FirstMatch在EXPLAIN语句中的含义是什么?

时间:2014-03-10 12:35:47

标签: mysql indexing explain

今天我注意到EXPLAIN声明中的“新”额外类型。

这是我的查询

SELECT UrlId,'61','Australia' 
FROM dbase.phonenumbers
WHERE UrlId IN (SELECT UrlId FROM dbase.phonenumbers
                WHERE PhoneNumber LIKE '+31%')
AND PhoneNumber LIKE '+61%'

EXPLAIN给出了这个,

phonenumbers    range   UrlId_PhoneNumber,PhoneNumber   PhoneNumber        12                               4176    Using where
phonenumbers    ref     UrlId_PhoneNumber,PhoneNumber   UrlId_PhoneNumber   4   dbase.phonenumbers.UrlId    4       Using where; Using index; FirstMatch(phonenumbers)

FirstMatch(phonenumbers)究竟是什么意思?我以前从未见过它,也找不到足够快速解释它的东西。

1 个答案:

答案 0 :(得分:2)

这是一种策略,可以在找到第一个真正的匹配后立即通过快速执行来避免重复产生。

所以FirstMatch(phonenumbers)意味着只要我们生成了一个匹配的记录组合,它就会缩短执行时间并跳回phonenumbers表。

来自FirstMatch strategy

  
      
  • FirstMatch策略的工作原理是执行子查询并在找到第一个匹配项后立即执行。[/ li>   
  • 这意味着,子查询表必须位于从子查询谓词引用的所有父选择表之后。
  •   
  • EXPLAIN将FirstMatch显示为“FirstMatch(tableN)”。
  •   
  • 该策略可以处理相关的子查询。
  •   
  • 但如果子查询具有有意义的GROUP BY和/或聚合函数,则无法应用它。
  •   
  • 使用optimizer_switch变量中的firstmatch = on | off标志控制FirstMatch策略的使用。
  •