Добрый день.
Есть таблица.
CREATE TABLE warehouses_changes
(
id INT(11) UNSIGNED PRIMARY KEY NOT NULL COMMENT 'ID' AUTO_INCREMENT,
company INT(11) UNSIGNED NOT NULL COMMENT 'Компания',
point INT(11) UNSIGNED NOT NULL COMMENT 'Точка продаж',
manager INT(11) UNSIGNED NOT NULL COMMENT 'Бариста',
work_shift INT(11) UNSIGNED NOT NULL COMMENT 'Смена',
supplier INT(11) NOT NULL COMMENT 'Поставщик',
bill INT(11) UNSIGNED COMMENT 'Чек',
ingredient INT(11) UNSIGNED NOT NULL COMMENT 'Ингредиент',
direction TINYINT(1) NOT NULL COMMENT 'Увеличение/уменьшение',
card INT(11) UNSIGNED COMMENT 'Card',
date INT(11) UNSIGNED NOT NULL COMMENT 'Дата',
value DECIMAL(30,3) UNSIGNED NOT NULL COMMENT 'Количество',
description TINYTEXT COMMENT 'Описание'
);
CREATE INDEX warehouses_changes_date_bill_company ON warehouses_changes (date, bill, company);
В ней 5 400 000 элементов.
Она вертится на AWS t2.micro.
Вопрос:
Почему запрос
SELECT * FROM `warehouses_changes` WHERE (`bill`=0) AND (`company`=1) ORDER BY `date` DESC LIMIT 20;
Выполняется 46 секунд
а запрос
SELECT * FROM `warehouses_changes` WHERE (`bill`=0) AND (`company`=1) ORDER BY `date` DESC;
4 секунды?
По логике наоборот должно быть.
И второй вопрос - долгие запросы следствие слабого сервера или в базе данных что-то можно улучшить?