У меня есть таблица MySQL, как это:MySQL - как ускорить SELECT SUM
CREATE TABLE `goods_flow` (
`cycle_id` int(11) NOT NULL,
`subject_id` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
`origin_id` int(11) NOT NULL,
`flow_value` int(11) NOT NULL,
PRIMARY KEY (`cycle_id`,`origin_id`,`subject_id`),
KEY `fk_goods_flow_subjects` (`subject_id`),
KEY `fk_goods_flow_origins` (`origin_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
и приложение часто использует этот запрос:
SELECT SUM(flow_value) AS 'amount_of_goods' FROM goods_flow WHERE subject_id = 'xyz';
, который занимает много времени.
Как я могу ускорить выполнение запроса? Спасибо
(1) Что такое «долгое время»? (2) пожалуйста, приложите план выполнения –
Для такого простого запроса, чтобы он был медленным, просто означает, что он выполняет полное сканирование таблицы. Первое, что приходит на ум, - это поставить уникальный объект на subject_id. – LukStorms
@DuduMarkovitz: длительное время составляет около 0,5 с, что является одним из самых высоких значений в моем журнале SQL-запросов. –