有人可以解释为什么这个mysql查询需要永远执行吗?就像陷入了循环,没有返回结果

问题描述 投票:0回答:1

有人可以解释一下为什么这个 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'
);
sql mysql mysqli
1个回答
0
投票

您可以通过将查询分成更小的查询来“调试”查询执行时间:

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; 

每一步都会检查执行时间是否太长/太慢。然后使用索引来减少执行时间。但请考虑您要添加索引的表设计的权衡,因为索引可能会减慢对表的插入、更新操作。

© www.soinside.com 2019 - 2024. All rights reserved.