我有一个mysql MyISAM表,我在上面做了一个简单的select id from mytable limit 1;。这只会冻结系统。
我试过explain select id from mytable limit 1;了。它再次冻结了我的系统。表统计: 50k条记录,10MB大小,2个索引(主键自动增量),8列。
我不知道explain语句失败的原因,因为它应该显示查询计划,其他什么也不显示。表的大小和记录的数量都不是很大,那么为什么mysql的运行速度会这么慢?相反,我在这里遗漏了什么?
发布于 2012-06-10 14:18:55
它应该在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来终止该等待链,现在explain语句按预期工作。
https://stackoverflow.com/questions/10966615
复制相似问题