日期:2014-05-18 浏览次数:20616 次
/* SELECT statement built using a subquery. */ SELECT Name FROM AdventureWorks.Production.Product WHERE ListPrice = (SELECT ListPrice FROM AdventureWorks.Production.Product WHERE Name = 'Chainring Bolts' ) /* SELECT statement built using a join that returns the same result set. */ SELECT Prd1. Name FROM AdventureWorks.Production.Product AS Prd1 JOIN AdventureWorks.Production.Product AS Prd2 ON (Prd1.ListPrice = Prd2.ListPrice) WHERE Prd2. Name = 'Chainring Bolts'
------解决方案--------------------
呵呵..个人觉得连接查询的语句句法比起子查询的语法简捷明了,以前上数据库课的时候,老师也是说连接的速度比较快....
------解决方案--------------------
首先,让我们来看看连接类型。SQL Server可以使用三种不同的技术来连接资料表:嵌套循环(nested loop),散列(hash),以及合并(merge)。一般来说,嵌套循环是最快的连接类型,但如果不可能使用嵌套循环的话,则会用到散列或者合并作为合适的连接类型。两者都比嵌套循环连接慢。
当连接大表时,则合并连接可能是最佳选项,而非嵌套循环连接。唯一的明确这一点的方式是对两者都进行测试以查看哪一个最有效率。