Я пытаюсь добавить индекс к моей базе данных MySQL, потому что в статистической базе данных, используемой системой, скорость запроса слишком низкая.
Требуется около 30 минут, чтобы вывести статистику за 1 минуту из более чем 50 000 кортежей
Сначала я пытался добавить индекс по столбцам, но это приводит к снижению производительности БД.Поскольку в запросе используется несколько столбцов, я должен использовать фактически используемые индексы.
Фактический запрос, который я использую, приведен ниже в простой версии.условие может измениться,
SELECT TIME,A,B,C,D,E,F,G FROM STAT_TBL1 WHERE TIME >='2019-07-04 16:00:00' AND TIME <='2019-07-04 16:59:59' AND H IN ('blah1') AND I IN ('blah2') ORDER BY TIME
SELECT TIME,A,B,C,D,E,F,G FROM STAT_TBL2 WHERE TIME >='2019-07-04 16:00:00' AND TIME <='2019-07-04 16:59:59' AND J IN ('blah3') AND K IN ('blah4') ORDER BY TIME
SELECT TIME,A,B,C,D,E,F,G FROM STAT_TBL3 WHERE TIME >='2019-07-04 16:00:00' AND TIME <='2019-07-04 16:59:59' AND H IN ('blah1') AND I IN ('blah2') AND J IN ('blah3') AND K IN ('blah4') ORDER BY TIME
Я пытался создать следующие индексы:
CREATE INDEX IDX_LIST1_01 ON STAT_TBL1 (TIME)
CREATE INDEX IDX_LIST1_02 ON STAT_TBL1 (H)
CREATE INDEX IDX_LIST1_03 ON STAT_TBL1 (I)
CREATE INDEX IDX_LIST2_01 ON STAT_TBL3 (TIME)
CREATE INDEX IDX_LIST2_02 ON STAT_TBL3 (J)
CREATE INDEX IDX_LIST2_03 ON STAT_TBL3 (K)
CREATE INDEX IDX_LIST3_01 ON STAT_TBL3 (TIME)
CREATE INDEX IDX_LIST3_02 ON STAT_TBL3 (H)
CREATE INDEX IDX_LIST3_03 ON STAT_TBL3 (I)
Что лучше;добавить индекс для каждого столбца или индекс с несколькими столбцами?