相对于编写SQL查询,我可以通过两种方式获取所需的内容:
类型1:
select
cl.id
from
datahub_clients cl,
datahub_client_accounts cl_ac,
datahub_accounts ac
where
cl.id=cl_ac.client_id
and
ac.id=cl_ac.account_id
and
ac.account_no_dataphile="7H0010A1"
;
类型2:
select
cl.id
from
datahub_clients cl
join
datahub_client_accounts cl_ac
on
cl.id=cl_ac.client_id
join
datahub_accounts ac
on
ac.id=cl_ac.account_id
where
ac.account_no_dataphile="7H0010A1"
;
以下是我脑海中的几个查询: 1)SQL编译器如何解释它们之间有什么区别? 2)任何人都应该有偏爱吗? (为什么?) 3)从可伸缩性的角度来看,哪个更好?
答案 0 :(得分:1)
Type 2:
select
cl.id
from
datahub_clients cl
join
datahub_client_accounts cl_ac
on
cl.id=cl_ac.client_id
join
datahub_accounts ac
on
ac.id=cl_ac.account_id
where
ac.account_no_dataphile="7H0010A1"
更好,因为用逗号分隔的表名会在所有这些表之间创建交叉联接(这在性能方面是很昂贵的),因此应避免使用
Type-1是旧的加入方法,强烈不鼓励使用