select_type列提供了各种表示table列引用的使用方式的类型。最常见的值包括SIMPLE、PRIMARY、DERIVED和UNION。其他可能的值还有UNION RESULT、DEPENDENT SUBQUERY、DEPENDENT UNION、UNCACHEABLE UNION以及UNCACHEABLE QUERY。
1. SIMPLE
对于不包含子查询和其他复杂语法的简单查询,这是一个常见的类型。
2. PRIMARY
这是为更复杂的查询而创建的首要表(也就是最外层的表)。这个类型通常可以在DERIVED和UNION类型混合使用时见到。
3. DERIVED
当一个表不是一个物理表时,那么就被叫做DERIVED。下面的SQL语句给出了一个QEP中DERIVED select-type类型的示例:
mysql> EXPLAIN SELECT MAX(id)
-> FROM (SELECT id FROM users WHERE name = 'xiaoxiao') c;
4. DEPENDENT SUBQUERY
这个select-type值是为使用子查询而定义的。下面的SQL语句提供了这个值:
mysql> EXPLAIN SELECT pc.*
-> FROM products_class AS pc
-> WHERE pc.id NOT IN (SELECT p.cid FROM products AS p);
5. UNION
这是UNION语句其中的一个SQL元素。
6. UNION RESULT
这是一系列定义在UNION语句中的表的返回结果。当select_type为这个值时,经常可以看到table的值是,这说明匹配的id行是这个集合的一部分。
下面的SQL产生了一个UNION和UNION RESULT select-type:
mysql> EXPLAIN SELECT p.* FROM products ASp WHERE p.product_name
LIKE '小米%'
-> UNION
-> SELECT p.* FROM products AS p WHERE p.id > 5;