主题:  SQL查询问题,请指教II

不是高手

职务:普通成员
等级:3
金币:5.0
发贴:1352
#12005/1/28 15:30:05
请问在SQL Server中,下列哪句查询语句执行起来效率高:

select * from tab_A,tab_B where tab_A.name=tab_B.name

select * from tab_A join tab_B on (tab_A.name=tab_B.name)



不是高手

职务:普通成员
等级:3
金币:5.0
发贴:1352
#22005/1/28 16:10:34
还有个问题,一起问了吧
上面的查询语句,一个是SQL1标准,一个是SQL2标准,现有的SQL SERVER 2K是不是部分支持SQL2标准?因为有的语句我用SQL2写法在查询分析器里不通过。

先谢过了!



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#32005/1/28 22:25:10
效率倒不知,不过新的SQL不推荐荐使用第一种用法,可能与标准或向后兼容有关吧。
使用JOIN好象更清晰,并且各表的条件链接不会混在一起,而第一种容易混了。


非常大鱼

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#42005/1/28 22:36:36
比如三个表

第一种:
SELECT m.Name, a.Title, c.Detail FROM Member m, Atitcle a, Comment c
WHERE a.MemberID = a.MemberID, a.ArticleID = c.ArticleID

第二种:
SELECT m.Name, a.Title, c.Detail
FROM Member m
INNER JOIN Article a ON
a.MemberID = a.MemberID
INNER JOIN Comment c ON
a.ArticleID = c.ArticleID


非常大鱼

5D公害

职务:普通成员
等级:9
金币:10.3
发贴:36272
#52005/1/29 10:57:02
把*换成您要的字段,如name,sex..........(略)
效率会更高



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#62005/1/30 10:42:14
yeah在上个帖子中说
引用:
把*换成您要的字段,如name,sex..........(略)
效率会更高
同意,查询分析器可以自动地生成列的列表。

据说 T-SQL 的优化查询可以让两者达到相同的效率,但出于向后兼容,我也推荐用 JOIN。它还有个好处:在必要的情况下方便地改成 LEFT JOIN or RIGHT JOIN



不是高手

职务:普通成员
等级:3
金币:5.0
发贴:1352
#72005/2/1 8:46:24
谢谢,明白了