例如: 一个完整的地址有好多个表, 首先有国家表, 省份表, 市表, 区表, 详细地址。 地址表只存上面几表的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
大家平时都用哪一种呢? 发现都有不同的用法, 想整理归类为一种
你这两条SQL语句似乎并不等价?
如果你想测试性能以确定那条更优,那你首先得保证他们在功能上是等价的。
这种东西,你要测试,得有数据量说明。
图书馆管理员说过:一切没有数据量的SQL测试都是耍流氓。