我想弄清楚为什么我的 MySQL 数据库上的查询速度如此之慢。我已经阅读了有关 MySQL 性能的各种内容,各种 SO 问题,但这对我来说仍然是一个谜。
- 我正在使用 MySQL 5.6.23-log - MySQL Community Server (GPL)
- 我有一个包含大约 3500 万行的表。
- 这个表被插入到大约 5 次/秒
我在除 answer_text 之外的所有列上都有索引
我正在运行的查询是:
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 秒,然后给出一个结果集:
有什么见解吗?
编辑
按照要求,我的节目创建表:
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
最佳答案
ALTER TABLE answers_onsite ADD key complex_index (screen_id,`timestamp`,answer_id);
关于mysql - 对具有 3500 万行的 mysql 表进行非常缓慢的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37260040/