Проблема производительности SQLite ORDER BY

У меня есть запрос с двумя объединениями (соединяющий три таблицы), который выполняется довольно быстро (обычно менее 1 мс). Если я сортирую результаты на основе индексированного столбца любой из трех таблиц, он все равно будет выполняться менее чем за 1 мс. Однако, когда я использую комбинацию двух столбцов (из двух разных таблиц) для сортировки, время выполнения составляет около 240 мс.

Нужно ли что-то вроде составного индекса для столбцов из разных таблиц? Я предполагаю, что это невозможно. Нужно ли использовать индексированные представления для достижения аналогичной цели? Или что-то не так с моим дизайном?

Я использую SQLite, и вот как выглядит мой запрос:

SELECT image.title,
       project.title,
       video.title
FROM image
JOIN video ON image.video_id=video.id
JOIN project ON project.id=video.project_id
ORDER BY image.video_id,
         project.title LIMIT 5000;

1 ответ

Невозможно использовать индексы для ускорения сортировки по столбцам из двух разных таблиц.

Другие вопросы по тегам