Это не очень интересный запрос - он просто доставляет первые 50 строк таблицы, к которой принадлежит id
. Когда JOINing
, , пожалуйста, уточните столбцы, чтобы мы знали, что происходит.
Вам действительно нужно LEFT
?
Если вам нужно LEFT
и id
принадлежит movies
, то это должно работать намного быстрее:
Между тем, найдите, сколько строк в movies
только один раз, так что вам не придется каждый раз вычислять его.
SELECT movies.*, curriculums.name AS curriculum,
teachers.name AS teacher, movie_sub_categories.name AS sub_cat_name,
movie_categories.name AS cat_name
FROM ( SELECT id FROM movies ORDER BY id LIMIT 0, 50 ) AS m
JOIN movies USING(id)
LEFT JOIN curriculums AS c ON movies.curriculum_id = c.id
LEFT JOIN teachers AS t ON movies.teacher_id = t.id
LEFT JOIN movies_movie_sub_categories AS mmsc ON movies.id = mmsc.movie_id
LEFT JOIN movie_sub_categories AS msc ON mmsc.movie_sub_category_id = msc.id
LEFT JOIN movie_categories AS mc ON msc.movie_category_id = mc.id
ORDER BY m.id
Пожалуйста, используйте SHOW CREATE TABLE
; нам нужно проверить, достаточно ли у вас индексов, таких как
mmsc: INDEX(movie_id)