У меня есть 2 таблицы в отношении 1: 1 (но в будущем оно может стать отношением 1: N) следующим образом:
CREATE TABLE article (
article_id INT,
inserted DATETIME
) ENGINE InnoDB;
CREATE TABLE article_top (
article_top_id INT,
article_id INT,
until DATETIME
) ENGINE InnoDB;
Что мне нужно сделать, так это выбрать статьи, отсортированные сначала по article_top.until DESC
, а затем по article.inserted DESC
(поэтому «верхние» статьи находятся сверху, а остальные отсортированы от самых новых к самым старым).
Я выполняю следующий запрос, который выполняется медленно (быстро, когда я пропускаю article_top.until
в предложении ORDER BY):
* * 1010
Могу ли я что-то сделать для оптимизации запроса, кроме объединения двух таблиц в одну (потеря возможности отношения 1: N)?
Я думал о добавлении дополнительного столбца в таблицу article
и использовании триггеров для его обновления. Таким образом, я мог бы добавить индекс к обоим столбцам, и порядок должен быть быстрее.
Есть ли другой способ оптимизации запроса?
Спасибо