【发布时间】:2015-01-24 14:51:10
【问题描述】:
我有一个使用 InnoDB 的简单表:
tag_id int(20), primary
tag varchar(50)
表中只有 106 个标签,有时这个简单的选择查询需要 10s、16s、30s 或更多:
# Query_time: 26 Lock_time: 0 Rows_sent: 106 Rows_examined: 106
use database;
SELECT `tag`
FROM (`tags`);
我的问题:有没有办法优化这个查询(所以它不会需要 26 秒才能完成)或者这是 MySQL 服务器过载的明显迹象?如果我从共享主机升级到 VPS,我会解决这个问题吗?
【问题讨论】:
-
您是否尝试过执行 EXPLAIN(EXPLAIN SELECT tag FROM tags)?这应该提供有关如何执行查询的更多信息。另外,手动运行查询实际上需要那么长时间吗?
-
@superultranova 如果我手动运行查询,我会得到正常的结果,大约快 30.000 倍(cca. 0,0007s 或类似的东西)。似乎这种长查询时间只是偶尔在仅持续几分钟的时间间隔内发生。如果我运行 EXPLAIN,我会得到这个,但我不知道如何处理它:
'id' => string '1' (length=1) 'select_type' => string 'SIMPLE' (length=6) 'table' => string 'tags' (length=7) 'type' => string 'ALL' (length=3) 'possible_keys' => null 'key' => null 'key_len' => null 'ref' => null 'rows' => string '106' (length=3) 'Extra' => string '' (length=0)
标签: mysql database mysql-slow-query-log