Есть таблица:
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
Талица планируется быть достаточно большой, поэтому хотелось бы избежать сортировки
Ответ на вопрос простой: необходим составной индекс в правильной последовательности, в этом и заключалась моя ошибка:
CREATE INDEX idx_approved_likes ON work (approved,likes);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости