我有兩個查詢來獲取相同的數據,它們或多或少具有相同的執行時間。過濾之前加入或之後加入SQL
SELECT name AS prog_name,d.chap_name,d.vid_name,d.idvideo FROM program
JOIN (SELECT name AS chap_name,chapter.idprogram, c.vid_name,c.idvideo FROM chapter
JOIN (SELECT a.name AS vid_name, a.idvideo, b.idchapter FROM video a
JOIN (SELECT idvideo,idchapter,x.idchaptervideo FROM chaptervideo
JOIN (SELECT idchaptervideo FROM prescriptionvideo WHERE idprescription=50)x
ON x.idchaptervideo=chaptervideo.idchaptervideo) b
ON b.idvideo=a.idvideo)c
ON c.idchapter=chapter.idchapter) d
ON d.idprogram=program.idprogram
SELECT program.name AS prog_name,chapter.name as chap_name,video.name as vid_name,video.idvideo FROM prescriptionvideo
JOIN chaptervideo ON prescriptionvideo.idchaptervideo=chaptervideo.idchaptervideo
JOIN video on chaptervideo.idvideo=video.idvideo
JOIN chapter on chaptervideo.idchapter=chapter.idchapter
JOIN program on chapter.idprogram=program.idprogram
where idprescription=50
有人可以指導我哪一個更好。我曾經在前者和之後加入後使用過濾。 MySQL的解釋顯示前者與後者相比有更多的行掃描。
查看http://stackoverflow.com/questions/2577174/join-vs-subquery – eggyal