mysql索引没有优化查询

时间:2012-06-10 05:43:17

标签: mysql sql-execution-plan

我有一个mysql MyISAM表,我正在做一个简单的select id from mytable limit 1;。这只会冻结系统。

我试过了explain select id from mytable limit 1;。它再次冻结了我的系统。表人口统计:50k记录,10 mbs大小,2个索引(主键自动增量),8列。

我无法理解为什么explain语句失败,因为它应该显示查询计划,没有别的。既不是表大小也不是记录的数量,那么为什么mysql工作这么慢?相反,我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

这是因为mytable上的等待状态。 eggyal给了我使用show processlist的线索。它显示:

+-----+---------+-----------------+----------------+---------+------+---------------------------------+----------------------------------------------------+
| Id  | User    | Host            | db             | Command | Time | State                           | Info                                               |
+-----+---------+-----------------+----------------+---------+------+---------------------------------+----------------------------------------------------+
| 349 | root    | localhost:56612 | mydb           | Query   | 3582 | Waiting for table metadata lock | ALTER TABLE `mytable` ADD INDEX(`fk_to_02`) |

我种了一个kill 349来终止那个等待链,现在解释语句按预期工作。