当前位置:Gxlcms > 数据库问题 > MySQL EXPLAIN 语句

MySQL EXPLAIN 语句

时间:2021-07-01 10:21:17 帮助过:11人阅读

* FROM tbl_name WHERE primary_key=1; SELECT * FROM tbl_name WHERE primary_key_part1=1 AND primary_key_part2=2;
  • eq_ref:对于前面每个表中记录的组合,都从这个表里读取一条记录。该类型可用于对索引列使用 = 操作符进行比较时。
SELECT * FROM ref_table,other_table
  WHERE ref_table.key_column=other_table.column;

SELECT * FROM ref_table,other_table
  WHERE ref_table.key_column_part1=other_table.column
  AND ref_table.key_column_part2=1;
  • ref:对于前面每个表中记录的组合,从该表读取所有所有匹配到的索引记录。ref 用于 JOIN 使用使用非主键或唯一索引列时,或只使用键的前缀的场景。
SELECT * FROM ref_table WHERE key_column=expr;

SELECT * FROM ref_table,other_table
  WHERE ref_table.key_column=other_table.column;

SELECT * FROM ref_table,other_table
  WHERE ref_table.key_column_part1=other_table.column
  AND ref_table.key_column_part2=1;
  • fulltext:JOIN 使用的是 FULLTEXT 类型的索引
  • ref_or_null:类似 ref,但会对 NULL 值做额外的查询。这种类型的 JOIN 优化常用于子查询,以下的示例 MySQL 全会使用 ref_or_null 联表来处理 ref_table :
SELECT * FROM ref_table
  WHERE key_column=expr OR key_column IS NULL;
  • index_merge:表示将会运用索引合并这一优化方式,详见 Section 8.2.1.3, “Index Merge Optimization”。

  • unique_subquery:替换某些场景下 IN 语句中子查询的 eq_ref 类型的联表。

  • index_subquery:类似 unique_subquery,替换 IN 子查询,但作用于非唯一性索引(nonunique indexes)。

value IN (SELECT key_column FROM single_table WHERE some_expr)
  • range:只返回范围内的记录。
  • index:同 ALL 类型,但只使用索引来搜索。
  • ALL:查询时进行全表扫描。

相关资源

  • 13.8.2 EXPLAIN Syntax
  • Explain Vs Desc anomalies in mysql
  • 8.8.2 EXPLAIN Output Format

MySQL EXPLAIN 语句

标签:hub   enter   ext   enc   sim   filter   from   cti   reference   

人气教程排行