有人可以解释一下为什么这个 mysql 查询需要永远执行吗?就像陷入了一个循环,没有返回任何结果。
SELECT m.title
FROM movies m
JOIN movie_starredin c ON m.ratingkey = c.movieid
WHERE c.actorid IN (
SELECT id
FROM movie_actors
WHERE name = 'Harrison Ford'
);
您可以通过将查询分成更小的查询来“调试”查询执行时间:
1 .运行它并检查执行时间:
SELECT id
FROM movie_actors
WHERE name = 'Harrison Ford'
2 .运行它并检查执行时间:
SELECT *
FROM movie_starredin
WHERE actorid IN (
SELECT id
FROM movie_actors
WHERE name = 'Harrison Ford'
);
3.运行它并检查执行时间,xxxxx 的值为
movie_starredin.actorid
:
SELECT m.title
FROM movies m
JOIN movie_starredin c ON m.ratingkey = c.movieid
WHERE c.actorid = xxxxx;
每一步都会检查执行时间是否太长/太慢。然后使用索引来减少执行时间。但请考虑您要添加索引的表设计的权衡,因为索引可能会减慢对表的插入、更新操作。