问:
我有5或6个表,我需要这些表中的数据: 我发出以下连接语句来完成我的查询。
SELECT d.batch_no,d.studytype_code,d.camp_code,d.dep_code,d.start_date,d.end_date,a.year,a.term_code,c.studytype_name ,e.dep_name_ar,f.camp_name_ar
FROM llkbatch a , llkbatch_category b , mm19studytype c ,llkbatch_exception d ,llkdepartment e,llkcamp f
WHERE a.batch_no = b.batch_no
AND b.studytype_code = c.studytype_code
AND b.batch_no = d.batch_no
AND b.studytype_code = d.studytype_code
AND d.dep_code = e.dep_code
AND d.camp_code = f.camp_code
但我认为join
有时表现不那么糟糕,在programming way
或database layer
中是否有替代方法,我的意思是加入一般,什么时候我应该离开连接。
非常感谢。
答案 0 :(得分:3)
有一种更现代的ANSI连接语法,可以使您的连接更具可读性,但不应影响性能:
SELECT d.batch_no,d.studytype_code,d.camp_code,d.dep_code,d.start_date,d.end_date,
a.year,a.term_code,c.studytype_name ,e.dep_name_ar,f.camp_name_ar
FROM ra1batch a
JOIN ra1batch_category b ON a.batch_no = b.batch_no
JOIN ra1studytype c ON b.studytype_code = c.studytype_code
JOIN ra1batch_exception d ON b.batch_no = d.batch_no
AND b.studytype_code = d.studytype_code
JOIN rr1department e ON d.dep_code = e.dep_code
JOIN rr2camp f ON d.camp_code = f.camp_code
答案 1 :(得分:2)
您在问题中编写的查询遵循Oracle的语法。但是您使用连接就像使用SQL Server一样。与您当前的查询相比,它将为您提供更好的性能。
与您当前的查询相比,以下查询的解析速度更快。
SELECT d.batch_no, d.studytype_code, d.camp_code, …
FROM ra1batch a
INNER JOIN ra1batch_category b on a.batch_no = b.batch_no