一尘不染

MySQL Explain计划中“选择经过优化的表”的含义

mysql

Select tables optimized awayMySQL Explain plan中的含义是什么?

explain select count(comment_count) from wp_posts;

+----+-------------+---------------------------+-----------------------------+
| id | select_type | table,type,possible_keys, | Extra                       |
|    |             | key,key_len,ref,rows      |                             |
+----+-------------+---------------------------+-----------------------------+
| 1  | SIMPLE      | all NULLs                 | Select tables optimized away| 
+----+-------------+---------------------------+-----------------------------+
1 row in set (0.00 sec)

注意:explain plan为便于阅读,已编辑输出。


阅读 255

收藏
2020-05-17

共1个答案

一尘不染

这意味着您执行的查询只不过计算表中的行数而已,该表是MyISAM表。MyISAM表是用单独的行数存储的,因此,执行此查询MySQL根本不需要查看任何表行数据。而是立即返回预先计算的行数。因此,对表的访问被“优化了”,查询速度很快。

在MySQL中的其他存储引擎(例如InnoDB)上不会发生相同的情况。但是,实际上,由于多种其他原因,您想在大多数情况下使用InnoDB而不是MyISAM。(即使没有行数优化,这种查询也非常非常快。)

select count(comment_count) from wp_posts;

那真的是你的本意吗?这与只是一样SELECT COUNT(*)...(假设comment_count不能为NULL,不能为之,否则您就不会获得优化)。如果您总共comment_count要使用s
SUM(comment_count),则不会获得``优化离开’‘的行为。

2020-05-17