Sto cercando di capire perché una query è così lenta sul mio database MySQL. Ho letto vari contenuti sulle prestazioni di MySQL, varie domande su SO, ma questo rimane un indovinello per me.Query molto lenta sulla tabella mysql con 35 milioni di righe
- Sto usando MySQL 5.6.23-log - MySQL Community Server (GPL)
- Ho una tabella con circa 35 milioni di righe.
- Questa tabella viene inserito per circa 5 volte/secondo
ho indici su tutte le colonne ad eccezione di answer_text
La query Sono in esecuzione è:
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
questa query tak es circa 20-30 secondi, poi dà un set di risultati:
Eventuali approfondimenti?
EDIT
come richiesto, il mio spettacolo 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
Pls aggiunge l'output di spiegazione della query e elenca tutti gli indici presenti sulla tabella. Probabilmente non hai un indice multi colonna che velocizzerebbe la query. – Shadow
Le schermate sono in genere un modo terribile di mostrare queste informazioni. Puoi sostituirlo con il contenuto testuale di 'SHOW CREATE TABLE' per quella tabella? – tadman
ha aggiornato la mia domanda, incollato l'istruzione della tabella di creazione. Inoltre, gli indici sono ben spiegati lì – ThaiKov