首页 新闻 会员 周边

SQL Left outerJoin 与inner join的问题

-1
[已解决问题] 解决于 2017-05-31 17:38

例如: 一个完整的地址有好多个表, 首先有国家表, 省份表, 市表, 区表, 详细地址。 地址表只存上面几表的ID, 所以完整的地址需要从多个表取得(这个只是一个举常见例子)

第一种方法,用查询结果插入法

select *,(select TypeName from tb_CardType where ID=tb_Book.CardTypeID) as CardTypeName
from tb_Book

 

第二种种方法Inner join

select HB.*,CT.TypeName as CardTypeName from tb_Book as HB 

inner join tb_CardType CT on HB.CardTypeID=CT.ID

二种方法哪一种好呢, 我通过执行计划, 得出结果和SQL Server Profiler来跟踪

第一种使用了Left Outer join, CPU开销平均为33(10次取平均值), 数据库Reads 46

第一种使用了Inner join, CPU开销平均为33(10次取平均值), 数据库Reads 42

大家平时都用哪一种呢? 发现都有不同的用法, 想整理归类为一种

风浪的主页 风浪 | 老鸟四级 | 园豆:2996
提问于:2017-05-18 14:20
< >
分享
最佳答案
0

你这两条SQL语句似乎并不等价?

如果你想测试性能以确定那条更优,那你首先得保证他们在功能上是等价的。

奖励园豆:5
西漠以西 | 小虾三级 |园豆:1675 | 2017-05-18 18:10
其他回答(1)
0

这种东西,你要测试,得有数据量说明。

图书馆管理员说过:一切没有数据量的SQL测试都是耍流氓。

爱编程的大叔 | 园豆:30839 (高人七级) | 2017-05-18 14:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册