MySQL Explain计划中的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
输出经过编辑以提高可读性。 最佳答案
这意味着您执行的查询只不过计算表中的行数而已,该表是MyISAM表。 MyISAM表存储有单独的行数,因此,执行此查询MySQL根本不需要查看任何表行数据。而是立即返回预先计算的行数。因此,表格访问被“优化了”,查询速度很快。
在MySQL中的其他存储引擎(如InnoDB)上不会发生相同的情况。但是实际上,由于各种其他原因,您在大多数情况下都希望使用InnoDB而不是MyISAM。 (即使没有行数优化,这种查询也非常非常快。)
select count(comment_count) from wp_posts;
那真的是你的本意吗?那和
SELECT COUNT(*)...
一样(假设comment_count
不能是NULL
,它不能是comment_count
,或者您不会获得最佳化)。如果您总共需要SUM(comment_count)
,则应该使用ojit_code,而不会获得“优化离开”的行为。