<<< 返回 access911.net 编程静态资料库索引页

关于使用SQL 语句的 IN 子句的性能分析

 

作者:MS  摘自:access911.net  录入:cg1  时间:2004-10-8  浏览人次:1449


专题地址:http://access911.net/fixhtm/72FAB31E13DCECF3.htm 如果需要更详细的评论或说明,请点击该地址。

 

简述:关于使用SQL 语句的 IN 子句的性能分析
ACCESS 也可以参考

 


问题:

关于使用SQL 语句的 IN 子句的性能分析
在where后面使用in ()条件,我看到很多地方告诫说尽量不要使用
枚举条件,这样会降低效率,请问这样使用是否会降低查询效率?
如果事实如此,那么它的降低具体跟什么有关呢?是枚举中元素的
个数还是其他?

 

回答:

首先,根据我的经验,虽然大多数情况下我们可以这样认为,但这种性能上的影响也不
是绝对的。举个例子来说(这里我用的是Northwind数据库中的Orders表)

SELECT * FROM Orders WHERE Employeeid = 1

SELECT * FROM Orders WHERE Employeeid = 2

SELECT * FROM Orders WHERE Employeeid = 4

和语句

SELECT * FROM Orders WHERE Employeeid IN ( 1 , 2 , 4 )

看起似乎不采用IN的语句的性能肯定要好一些,但是在实际情况中我们必须要用UNION
将上面的语句结合起来,基于这样的考虑的话下面含有IN语句的SELECT语句就好一些了
;因为此时SQL Server汇为第一段采用UNION的语句生成三次执行计划(Excution
 Plan)。另外,我们还.....................
...........

资料库随时有更新,欲查看最新详情请单击专题地址http://access911.net/fixhtm/72FAB31E13DCECF3.htm

 


上一篇:access中如何保存数学公式

下一篇:安装MSDE2000 sp3a时,提示指定的实例名称无效

2017年2月22日生成静态资料