Select tables optimized awayMySQL Explain plan中的含义是什么?
Select tables optimized away
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为便于阅读,已编辑输出。
explain plan
这意味着您执行的查询只不过计算表中的行数而已,该表是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),则不会获得``优化离开’‘的行为。
SELECT COUNT(*)...
comment_count
NULL
SUM(comment_count)