[英]SQL queries performance
這些SQL查詢中的哪一個性能更好? 假設給出相同的結果:
SELECT mov_title, mov_year, mov_dt_rel, act_fname, act_lname, dir_fname, dir_lname
FROM movie
JOIN movie_cast
ON movie.mov_id = movie_cast.mov_id
JOIN actor
ON actor.act_id = movie_cast.act_id
JOIN movie_direction
ON movie.mov_id = movie_direction.mov_id
JOIN director
ON director.dir_id = movie_direction.dir_id
WHERE movie.mov_id IN (SELECT mov_id
FROM rating WHERE rev_id IN (SELECT rev_id
FROM reviewer
WHERE rev_name IS NULL));
SELECT mov_title, mov_year, mov_dt_rel, dir_fname, dir_lname,
act_fname, act_lname
FROM movie a, movie_direction b, director c,
rating d, reviewer e, actor f, movie_cast g
WHERE a.mov_id=b.mov_id
AND b.dir_id=c.dir_id
AND a.mov_id=d.mov_id
AND d.rev_id=e.rev_id
AND a.mov_id=g.mov_id
AND g.act_id=f.act_id
AND e.rev_name IS NULL;
通常,除了返回的行數以外,還有哪些查詢性能注意事項。
IN (SELECT ...)
可能是性能殺手。 通常最好避免這種構造。
第一個公式(帶有“ JOIN..ON”)是本世紀進行SQL的“正確”方法。 第二個(“逗號連接”)是老式的; 不要使用它。 (這不是性能差異,只是樣式差異。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.