@davidb. , , Это зависит от характера данных. Только ты можешь ответить на это.

у оптимизировать этот запрос,

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;

в настоящее время этот запрос выполняется в среднем около 98 секунд (запрос занял 97,4096 секунд) в Windows 10, 64-разрядной ОС, 16 ГБ ОЗУ.

это таблица деталей для вашей справки.

    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;

количество записей в таблице tran_sales:13,5 миллионов.

Примечание: Даже я пытался без и с этим индексомKEY tran_date (tran_date) , и среднее время занимает 98 секунд с и безKEY tran_date (tran_date)

Пожалуйста, предложите, как ускорить результаты, изменив запрос или изменив некоторые настройки по умолчанию my.ini, если это поможет. Благодарю.

Обновить минимальная дата в таблице: 2016-07-01, а максимальная дата в таблице: 2017-07-25

Ответы на вопрос(2)

Ваш ответ на вопрос