我想弄清楚为什么查询在我的MySQL数据库上太慢了。我已经阅读了关于MySQL性能的各种内容,各种SO问题,但这仍然是一个谜。有超过3500万行的mysql表非常慢的查询
查询我正在运行的是:
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
此查询tak ES大约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
请添加查询的解释输出并列出您在表上的所有索引。您可能没有多列索引来加速查询。 – Shadow
屏幕截图通常是显示此信息的可怕方式。你可以用那个表的“SHOW CREATE TABLE”的文本内容替换它吗? – tadman
更新了我的问题,粘贴了create table语句。另外,索引很好地解释了 – ThaiKov