我正在尝试弄清楚为什么我的MySQL数据库查询如此缓慢。我已经阅读了关于MySQL性能的各种内容,以及各种SO问题,但这对我来说仍然是一个谜。
1. 我使用的是MySQL 5.6.23-log - MySQL Community Server(GPL)。 2. 我有一张大约有3500万行的表。 3. 这个表每秒插入大约5次。 4. 这个表看起来像这样:
5. 我在所有列上都有索引,除了answer_text。
我运行的查询是:
这个查询大约需要20-30秒的时间,然后会返回一个结果集: 有什么见解吗? 编辑 如所请求,我的show create table:
1. 我使用的是MySQL 5.6.23-log - MySQL Community Server(GPL)。 2. 我有一张大约有3500万行的表。 3. 这个表每秒插入大约5次。 4. 这个表看起来像这样:
![enter image description here](https://istack.dev59.com/r9hbg.webp)
SELECT answer_id, COUNT(1)
FROM answers_onsite a
WHERE a.screen_id=384
AND a.timestamp BETWEEN 1462670000000 AND 1463374800000
GROUP BY a.answer_id
这个查询大约需要20-30秒的时间,然后会返回一个结果集: 有什么见解吗? 编辑 如所请求,我的show create table:
CREATE TABLE 'answers_onsite' (
'id' bigint(20) unsigned NOT NULL AUTO_INCREMENT,
'device_id' bigint(20) unsigned NOT NULL,
'survey_id' bigint(20) unsigned NOT NULL,
'answer_set_group' varchar(255) NOT NULL,
'timestamp' bigint(20) unsigned NOT NULL,
'screen_id' bigint(20) unsigned NOT NULL,
'answer_id' bigint(20) unsigned NOT NULL DEFAULT '0',
'answer_text' text,
PRIMARY KEY ('id'),
KEY 'device_id' ('device_id'),
KEY 'survey_id' ('survey_id'),
KEY 'answer_set_group' ('answer_set_group'),
KEY 'timestamp' ('timestamp'),
KEY 'screen_id' ('screen_id'),
KEY 'answer_id' ('answer_id')
) ENGINE=InnoDB AUTO_INCREMENT=35716605 DEFAULT CHARSET=utf8
SHOW CREATE TABLE
命令的文本内容来替代截图呢? - tadman