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

questionAnswers(2)

yourAnswerToTheQuestion