select City.*,State.state_name from (
select * from City where City_Id in(null)
) as city
inner join State on city.state_id=State.State_id
================================================
select City.*,State.state_name from city a
inner join State on city.state_id=State.State_id
where a.citry_id is null
朋友说下面的比上面的慢...
是这样的么??
可以解释下为什么么??
select * from City where City_Id in(null)
) as city
inner join State on city.state_id=State.State_id
================================================
select City.*,State.state_name from city a
inner join State on city.state_id=State.State_id
where a.citry_id is null
朋友说下面的比上面的慢...
是这样的么??
可以解释下为什么么??
===================================================
如果 City State 个1000条数据
第1中方式 先查询()里的 CITY 也就是 1000条 假如结果是 10条
再查询 10* 1000 的数据 也就是一共 10*1000+1000 条的数据
第2种方式 因为直接联合查询 所以结果是 查询了1000*1000 条数据
一个是 1W1000条 一个是10W条 所以我说你的慢
===================================================
在数据量比较大的情况下,查询应当先过滤不必要数据,再做连接和列选择.这样就可以减少不必要数据做连接所带来的消耗.
在数据量较少的情况下,查询应当尽量避免嵌套,因为嵌套使得语句解析时浪费较多的时间.
一般情况下2个以上表连接,数据量在千数量级以上时,嵌套所带来的时间消耗是可以容忍的.所以为了通用一些,还是选择第一种方案的好.