Sugerencia de optimización de Mysql para mesa grande

quiero optimizar 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;

Actualmente, esta consulta se ejecuta durante un promedio aproximado de 98 segundos (la consulta tomó 97.4096 segundos) en Windows 10, sistema operativo de 64 bits, 16 GB de RAM.

Este es el detalle de la tabla para su referencia.

    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;

el recuento de registros en la tabla tran_sales:13,5 millones.

Nota: Incluso lo intenté sin y con este índiceKEY tran_date (tran_date) . y el tiempo promedio que toma es de 98 segundos con y sinKEY tran_date (tran_date)

sugiera cómo acelerar los resultados cambiando la consulta o cambiando algunas configuraciones predeterminadas de my.ini si eso ayuda. Gracias.

Actualizar la fecha mínima en la tabla es: 2016-07-01, y la fecha máxima en la tabla es: 2017-07-25

Respuestas a la pregunta(2)

Su respuesta a la pregunta