Дано:
Сервер MySQL 5.6.34, база данных InnoDB ~250Gb с учетом индексов, около 100 таблиц. Сам сервер AWS RDS db.t3.medium (2VCpu / 4GB / General Purpose SSD (gp2)). Во время запроса нагрузка на CPU не выше 5%, максимум памяти 3GB, Write/Read IOPS 4/20.
Есть следующая таблица:
SHOW TABLE STATUS like 'table'
+--------------------+------+-------+----------+--------+--------------+-----------+---------------+------------+---------+--------------+-------------------+-----------+----------+-----------------+--------+--------------+-------+
|Name |Engine|Version|Row_format|Rows |Avg_row_length|Data_length|Max_data_length|Index_length|Data_free|Auto_increment|Create_time |Update_time|Check_time|Collation |Checksum|Create_options|Comment|
+--------------------+------+-------+----------+--------+--------------+-----------+---------------+------------+---------+--------------+-------------------+-----------+----------+-----------------+--------+--------------+-------+
|table |InnoDB|10 |Compact |12675958|184 |2339373056 |0 |1447084032 |7340032 |12927969 |2021-10-01 00:00:02|NULL |NULL |cp1251_general_ci|NULL | | |
+--------------------+------+-------+----------+--------+--------------+-----------+---------------+------------+---------+--------------+-------------------+-----------+----------+-----------------+--------+--------------+-------+
Сктрутура:
Create Table
CREATE TABLE `table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`a` int(11) NOT NULL,
`b` decimal(10,5) NOT NULL,
`c` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `a_c` (`a`,`c`),
) ENGINE=InnoDB AUTO_INCREMENT=12927969 DEFAULT CHARSET=cp1251"
Количество записей в ключе a_c - около 3000 штук
Запрос:
SELECT a, c, SUM(b) FROM table GROUP BY a, c
Explain:
+--+-----------+--------------------+-----+-------------+-------+-------+----+--------+-----+
|id|select_type|table |type |possible_keys|key |key_len|ref |rows |Extra|
+--+-----------+--------------------+-----+-------------+-------+-------+----+--------+-----+
|1 |SIMPLE |table |index|a_c |a_c |8 |NULL|12675958|NULL |
+--+-----------+--------------------+-----+-------------+-------+-------+----+--------+-----+
Так вот - этот запрос выполняет на этой таблице 49 минут! Почему так долго и как оптимизировать?