在具有3500万行的mysql表上查询非常慢

Tha*_*Kov 5 mysql

我试图弄清楚为什么查询在我的MySQL数据库上这么慢.我已经阅读了有关MySQL性能,各种SO问题的各种内容,但这对我来说仍然是个谜.

  1. 我正在使用MySQL 5.6.23-log - MySQL社区服务器(GPL)
  2. 我有一张大约3500万行的表.
  3. 该表被插入约5次/秒
  4. 该表如下所示: 在此输入图像描述

  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
Run Code Online (Sandbox Code Playgroud)

此查询大约需要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
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 4

ALTER TABLE answers_onsite ADD key complex_index (screen_id,`timestamp`,answer_id);
Run Code Online (Sandbox Code Playgroud)