请问:进行多表查询的时候,使用INNER JOIN 和不使用INNER JOIN ,在性能上有区别嘛?

yshawxp 2004-01-19 06:31:51
在进行多表查询的时候:

例如:

有2张表 t1 t2

t1表------

id name sex job
1 aaa m bb
3 fff f cc
5 ss m tt

t2表-------

id userID address country
3 1 广州 中国
5 3 北京 中国
9 5 上海 中国


我可以用

select *
from t1
inner join t2
on t1.id = t2.userID
where t2.userID = 1

得到结果:

id name sex job id userID address country
1 aaa m bb 3 1 广州 中国

--------------------------

可是 我不用inner join

也可以用
select *
from t1,t2
where (t1.id = t2.userID) and t2.userID = 1

也可以实现以上的显示结果的!



我现在的问题是,这2种方法,对于多表(2张或2张以上的)的查询,

在同等的条件下,

哪一个方法会比较好一些呢?(查询的速度啊,服务器的资源啊。。。。)

大家可以说说吗??

谢谢!!!





...全文
1194 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
passionke 2004-01-19
  • 打赏
  • 举报
回复 1
建立连接的语法有两大体系:1、传统语法;2、ANSI/ISO SQL-92兼容语法。
楼主第二种是传统语法。
对于内部连接来说:两种语法效果是一样的;
对于外部连接来说:传统语法存在多义性,根据连接顺序的不同,结果就有可能不同,甚至可能丢失数据;并且Microsoft强烈建议使用ANSI语法,并公开声明在产品将来的版本中将废除传统的外部连接语法。
(楼主可以自己找找例子看,另外《Transact-SQL 权威指南》这本书本人认为不错,中国电力出版社的,KEN HENDERSON著,键莲科技译;楼主可以看看)
w_rose 2004-01-19
  • 打赏
  • 举报
回复
也不一定,在数据很小的时候,后一种形式也许更快。(可能首先做“迪卡尔积”,然后在删去多余的结果)。但是这可能造成一些运算上的错误。
smalldeer 2004-01-19
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2480/2480298.xml?temp=.4477655

这个帖子讨论的是同样的问题

inner join可以使结构更加清晰

效率上面两者差不多,

where采用的是旧式的 Sql语法
join新点
w_rose 2004-01-19
  • 打赏
  • 举报
回复
单从结果上看,上面两种都一样。后一种形式SQL server也会尽量去优化成inner join形式。inner join形式指出关联所使用的关键字段,而后一种比较模糊,所以SQL server可能不能队后一种做最好的优化。
cgsun 2004-01-19
  • 打赏
  • 举报
回复
在查询分析器里ctrl +L看一下,就知道了
SQL Server 处理联接时,查询引擎从多种可能的方法中选择最高效的方法处理联接。尽管不同联接的物理执行采用多种不同的优化,但是逻辑序列都:

应用 FROM 子句中的联接条件。


应用 WHERE 子句中的联接条件和搜索条件。


应用 HAVING 子句中的搜索条件。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧