簡體   English   中英

SQL查詢性能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM