我不是在查询领域的表达,所以想要了解以下联接查询的实践指导,因为性能对我们的应用程序非常关键。我正在使用MSSQL。
我们有4个表,我可以根据ID来提取数据。以下是表的结构:
Table:PLANT(ID,NAME)
ID_PLANT | Name
100 CALIFORNIA
200 TEXAS
Table: SITE
ID_SITE | Name | ID_PLANT
1 SAn Ramon 100
2 Dallas 200
3 Houstan 200
Table: MACHINE
ID_MACHINE | Name | ID_SITE
1 LASIC 1
2 MOTOR 1
3 PUMP 1
4 LASIC 2
5 LASIC 3
Table: MACHINEPARTS
ID_MACHINEPARTS | Name | ID_MACHINE
1 A 1
2 B 1
3 C 2
4 D 2
5 E 3
6 A 4
7 B 4
8 A 5
9 B 5
现在我需要为MACHINEPARTS显示每个tble的Name列。所以我的查询如下:
SELECT
MP.ID_MACHINEPARTS,
MP.NAME,
M.NAME,
S.NAME,
P.NAME
FROM
PLANT P , SITE S , MACHINE M , MACHINEPARTS MP
WHERE
MP.ID_MACHINE = M.ID_MACHINE AND
M.ID_SITE = S.ID_SITE AND
S.ID_PLANT = P.ID_PLANT
此查询工作正常,但是编写此类连接查询是正确的方法,还是可以使用内部/外部联接等其他方法进行改进?
提前致谢。
答案 0 :(得分:4)
这不会提高性能,但最好使用标准的ansi连接语法:
SELECT
MP.ID_MACHINEPARTS,
MP.NAME,
M.NAME,
S.NAME,
P.NAME
FROM MACHINEPARTS MP
JOIN MACHINE M ON MP.ID_MACHINE = M.ID_MACHINE
JOIN SITE S ON M.ID_SITE = S.ID_SITE
JOIN PLANT P ON S.ID_PLANT = P.ID_PLANT