OrderBy возвращает using filesort

312
12 ноября 2017, 15:28

Есть таблица:

CREATE TABLE work
(
    id          INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    workName    VARCHAR(255)           NOT NULL,
    userId      INT                    NOT NULL,
    likes       INT DEFAULT '0'        NOT NULL,
    description TEXT                   NULL,
    approved    TINYINT(1) DEFAULT '0' NOT NULL,
    created_at  TIMESTAMP              NULL,
    updated_at  TIMESTAMP              NULL
);
CREATE INDEX work_approved_index
    ON work (approved);
CREATE INDEX work_likes_index
    ON work (likes);
CREATE INDEX work_userid_index
    ON work (userId);

Заглянул в explain, вижу Using where; Using filesort, не понимаю куда и как оптимизировать

EXPLAIN SELECT likes, approved
    FROM `work`
    WHERE `work`.`approved` = TRUE
    ORDER BY `work`.`likes`, approved

Талица планируется быть достаточно большой, поэтому хотелось бы избежать сортировки

Answer 1

Ответ на вопрос простой: необходим составной индекс в правильной последовательности, в этом и заключалась моя ошибка:

CREATE INDEX idx_approved_likes ON work (approved,likes);
READ ALSO
Не работает триггер для команды INSERT

Не работает триггер для команды INSERT

По заданию нужно создать триггер, который при выполнении функции INSERT для таблицы 1 вставлял бы в таблицу 2 количество строк в таблице 1

299
Вопрос по ссылкам и объектам Java

Вопрос по ссылкам и объектам Java

ЗдравствуйтеЧто происходит с объектами созданными в методе

322
Java Android. Запись экрана (скриншот) и ее передача

Java Android. Запись экрана (скриншот) и ее передача

Я начинающий в программировании, и мне с одноклассником (оба из 11 класса) нужно сделать проект, который будет чем-то напоминать демонстрацию...

320
Перенос на виртуальный сервер(Apache Tomcat)

Перенос на виртуальный сервер(Apache Tomcat)

Здравствуйте, недавно столкнулся с проблемой: написал сервер tomcat, но работает он только на локалкеВ этом деле я новичок и хотел спросить,...

355