这两种查询编写方式有什么区别?

时间:2018-10-24 13:47:35

标签: mysql sql

相对于编写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)从可伸缩性的角度来看,哪个更好?

1 个答案:

答案 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是旧的加入方法,强烈不鼓励使用