关于查询效率
问题一.
表达式1:select a.*,b.* from a inner join b on a.id=b.id
表达式2:select a.*,b.* from a,b where a.id=b.id
两个表达式哪个效率高?
问题二.
以上两个表达式查询后的结果会出现如下情况:
a.name b.name
------------------
name 2 names 2
name1 2 names 2 '这行的names 2 并不存在数据!如果不想使用默认上行的数据应该如何解决?
多谢!
[解决办法]
第一个速度快 第二个相当于交叉联接
恶意用 isnull(字段,要替换的值)来替换出现null的值
可以用gruoping 了解是不是系统生成的null
[解决办法]
你显示的不是a.name和b.name么 相应的列
[解决办法]
第一个问题中的两个语句执行过程是一样的,为什么第一个快,可以给我例子吗
[解决办法]
前两个语句速度差不多
select a.*,b.* from a,b where a.id=b.id 等同于
select a.*,b.* from a cross join b where a.id=b.id
但因为有限制条件所以相当于内连接,速度和第一句几乎没有差别
至于cyc308() 的需求比较特别,按照你的意思,你想要的连接条件根本不是a.id=b.id
a.id=b.id就是得出那个结果
你想要得是a.rowid=b.rowid,很可惜SQLServer2000没有rowid的用法
[解决办法]
最好用INNER JOIN