Я пытаюсь понять, почему запрос так медленен в моей базе данных MySQL. Я читал различные материалы о производительности MySQL, различные вопросы, но это остается загадкой для меня.Очень медленный запрос в таблице mysql с 35 миллионами строк
- Я использую MySQL 5.6.23-журнал - MySQL Community Server (GPL)
- У меня есть таблица с примерно 35 миллионов строк.
- Эта таблица вставляется примерно 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
этот запрос tak эс примерно 20-30 секунд, а затем дает результирующий набор:
Есть идеи?
EDIT
, как просили, мое шоу создать таблицу:
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
Pls добавляет вывод объяснения запроса и перечисляет все индексы, которые у вас есть на таблице. Вероятно, у вас нет индекса нескольких столбцов, который ускорит запрос. – Shadow
Скриншоты, как правило, ужасный способ показать эту информацию. Можете ли вы заменить это текстовым контентом 'SHOW CREATE TABLE' для этой таблицы? – tadman
обновил мой вопрос, вставил инструкцию create table. Кроме того, индексы хорошо объяснены там – ThaiKov