Sugestão de otimização do Mysql para tabela grande
eu quero otimizar esta consulta,
select location_id, dept_id,
round(sum(sales),0), sum(qty),
count(distinct tran_id),
now()
from tran_sales
where tran_date <= '2016-12-24'
group by location_id, dept_id;
atualmente, essa consulta é executada por cerca de 98 segundos (a consulta levou 97,4096 segundos.) no Windows 10, 64 bits, 16 GB de RAM.
este é o detalhe da tabela para sua referência.
CREATE TABLE tran_sales (
tran_date date NOT NULL,
location_id int(11) NOT NULL,
dept_id int(11) NOT NULL,
item_id varchar(25) NOT NULL,
tran_id int(11) NOT NULL,
sales float DEFAULT NULL,
qty int(11) DEFAULT NULL,
update_datetime datetime NOT NULL,
PRIMARY KEY (tran_date,location_id,dept_id,item_id,tran_id),
KEY tran_date (tran_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
a contagem de registros na tabela tran_sales:13,5 milhões.
Nota: Mesmo eu tentei sem e com este índiceKEY tran_date (tran_date)
. e o tempo médio que leva é de 98 segundos com e semKEY tran_date (tran_date)
sugira como acelerar os resultados alterando a consulta ou alterando algumas configurações padrão do my.ini, se isso ajudar. Obrigado.
Atualizar a data mínima na tabela é: 01/07/2016 e a data máxima na tabela é: 25/07/2017