ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » MS SQL Server » 使用join on和where那个更快

标题: 使用join on和where那个更快
离线 baresi
新新会员


精华贴数 1
个人空间 0
技术积分 1198 (1463)
社区积分 2127 (571)
注册日期 2001-11-28
论坛徽章:6
ITPUB元老会员2006贡献徽章九尾狐狸铁扇公主授权会员2008年新春纪念徽章
      

发表于 2002-5-19 10:31 
使用join on和where那个更快

请分别说明在有索引和没索引的情况


__________________
往事并不如烟未来就在眼前

Msn:Baresi_it#hotmail.com
Mail:Baresi#itpub.net
只看该作者    顶部
离线 smalljoe
light feather


精华贴数 3
个人空间 0
技术积分 516 (3732)
社区积分 1948 (606)
注册日期 2001-9-29
论坛徽章:7
ITPUB元老会员2006贡献徽章授权会员2008北京奥运纪念徽章:水球生肖徽章:狗生肖徽章:猴
生肖徽章:鸡     

发表于 2002-5-23 11:50 
我觉得要用的表很多时关系又复杂时,JOIN会快,简单的两个表关联的可能是一样的


__________________
提供ERP, SAP服务,培训--------------------------------
小桥流水人家,枯藤老树昏鸦,古道西风瘦马,夕阳西下,断肠人在天涯。
MSN: smalljoejoe@hotmail.com
Tel:   13811596347
欢迎来到我的小天地:
http://spaces.msn.com/members/smallqiaojoe/

http://Royis.com
只看该作者    顶部
离线 zhuhappy
中级会员



精华贴数 0
个人空间 0
技术积分 684 (2776)
社区积分 2 (23002)
注册日期 2001-12-2
论坛徽章:0
      
      

发表于 2002-5-23 21:46 
从集合的角度上看这个问题!

从集合的角度上看这个问题(很久没有看书,不敢瞎说),但是我认为where在有index时快,没有index时就一样了!


只看该作者    顶部
离线 baresi
新新会员


精华贴数 1
个人空间 0
技术积分 1198 (1463)
社区积分 2127 (571)
注册日期 2001-11-28
论坛徽章:6
ITPUB元老会员2006贡献徽章九尾狐狸铁扇公主授权会员2008年新春纪念徽章
      

发表于 2002-5-28 12:45 
u p


__________________
往事并不如烟未来就在眼前

Msn:Baresi_it#hotmail.com
Mail:Baresi#itpub.net
只看该作者    顶部
离线 zhuzhichao
炎龙骑士


精华贴数 2
个人空间 0
技术积分 1684 (998)
社区积分 195 (2410)
注册日期 2001-10-15
论坛徽章:3
ITPUB元老会员2006贡献徽章授权会员   
      

发表于 2002-5-28 13:45 
我認為這是一樣的.
Inner join和where都是標準的SQL-99寫法

如果不一樣MS早就有人作出解釋了.


__________________
zhuzhichao@itpub.net
只看该作者    顶部
离线 baresi
新新会员


精华贴数 1
个人空间 0
技术积分 1198 (1463)
社区积分 2127 (571)
注册日期 2001-11-28
论坛徽章:6
ITPUB元老会员2006贡献徽章九尾狐狸铁扇公主授权会员2008年新春纪念徽章
      

发表于 2002-5-28 13:48 
在有索引的情况下呢


__________________
往事并不如烟未来就在眼前

Msn:Baresi_it#hotmail.com
Mail:Baresi#itpub.net
只看该作者    顶部
离线 zhuzhichao
炎龙骑士


精华贴数 2
个人空间 0
技术积分 1684 (998)
社区积分 195 (2410)
注册日期 2001-10-15
论坛徽章:3
ITPUB元老会员2006贡献徽章授权会员   
      

发表于 2002-5-28 14:07 
我認為還是一樣的.

認為join中不能使用到索引的想法是錯誤的.

我本來想幫你測試一下的.(我有兩個主從表,各有80萬,300萬資料)

但執行到中途時,抱tempdb已經滿了,我又不想輕易的動DB Server,因為有很多人在使用.因此作罷.


__________________
zhuzhichao@itpub.net
只看该作者    顶部
离线 baresi
新新会员


精华贴数 1
个人空间 0
技术积分 1198 (1463)
社区积分 2127 (571)
注册日期 2001-11-28
论坛徽章:6
ITPUB元老会员2006贡献徽章九尾狐狸铁扇公主授权会员2008年新春纪念徽章
      

发表于 2002-5-28 15:13 
thank you very much


__________________
往事并不如烟未来就在眼前

Msn:Baresi_it#hotmail.com
Mail:Baresi#itpub.net
只看该作者    顶部
离线 richto
版主



精华贴数 0
个人空间 0
技术积分 8648 (141)
社区积分 0 (52285)
注册日期 2002-2-27
论坛徽章:4
管理团队成员ITPUB元老管理团队2006纪念徽章会员2006贡献徽章  
      

发表于 2002-5-30 17:11 
SQL Server has SQL Optimizer internally to generate multiple execution plans and based on estimated cost to pick up a execution plan to run your SQL statement, there is no absoluted rule to tell whether your SQL will use a specific index or not.  Actually, SQL Server internal optimizer will rewrite you SQL for optimization.  Sometime it will pick up a bad execution, then you have tune your SQL manually or by some third parties' tools.


只看该作者    顶部
离线 大麦壳
初级会员



精华贴数 0
个人空间 0
技术积分 34 (36006)
社区积分 2 (23323)
注册日期 2002-6-13
论坛徽章:0
      
      

发表于 2002-6-14 16:57 
同意richto的说法,SQL Server早帮你优化好了,自己不用考虑那么多

你可以在Query Anlyzer中用这两个语句做一下execute plan(不知道是不是这词,我身边没有QA),就知道了


只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问