SQL中Join之前或Join之后的过滤

Jib*_*n K 6 mysql sql join explain

我有两个查询来获取相同的数据,它们或多或少具有相同的执行时间。

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
Run Code Online (Sandbox Code Playgroud)

有人可以指导我哪一个更好吗?我在前者的连接之前和后者的连接之后使用了过滤。MySQL 解释显示前者比后者有更多的行扫描。

Jib*_*n K 1

第一个更好,因为它易于读写并且具有较低的行扫描值,否则查询具有相同的结果集。