位置: 编程技术 - 正文

SQL中WHERE变量IS NULL条件导致全表扫描问题的解决方法(sql中的where in)

编辑:rootadmin

印象中记得,以前在做Oracle开发时,这种写法是会导致全表扫描的,用不上索引,不知道Sql Server里是否也是一样呢,于是做一个简单的测试1、建立测试用的表结构和索引:

2、插入1万条测试数据:3、先开启执行计划显示:在SQL Server Management Studio的查询窗口里,右击窗口任意位置,选择“包含实际的执行计划”:

4、开始测试,用下面的SQL进行测试:测试结果如下:

可以看到,即使@i有值,不管@i IS NULL是放在前面还是放在后面,都无法用到age的索引,另外age=ISNULL(@i,age)也用不上索引

最终结论,SQL Server跟ORACLE一样,如果条件里加了 变量 IS NULL,都会导致全表扫描。

建议SQL改成:当然,如果只有一个条件,可以设计成2条SQL,比如:

但是,如果条件多了,SQL数目也变得更多,所以建议用EXEC的方案

推荐整理分享SQL中WHERE变量IS NULL条件导致全表扫描问题的解决方法(sql中的where in),希望有所帮助,仅作参考,欢迎阅读内容。

SQL中WHERE变量IS NULL条件导致全表扫描问题的解决方法(sql中的where in)

文章相关热门搜索词:sql where 语法,sql where 语法,sql where is,sql where 变量,sql where is,sql语句where条件是变量,sql where is,sql语句where条件是变量,内容如对您有帮助,希望把文章链接给更多的朋友!

SQL多表连接查询实例分析(详细图文) 新建两张表:表1:student截图如下:表2:course截图如下:(此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这

sql注入数据库修复的两种实例方法 1.第一种情况是需要将指定的注入字符串全部替换掉(仅替换注入的字符串为空)declare@delStrnvarchar()set@delStr='scriptsrc=

一个删选数据的例子,使用GROUP、DISTINCT实例解析 需求描述:一个表MyImage,列有:号码ID,路径PATH如:IDPATH1C:/1C:/1D:/2C:/2C:/3A:/3C:/4D:/写个SQL语句,返回这样的记录的ID号:相同ID存在不同PATH。如上例子,

本文链接地址:https://www.jiuchutong.com/biancheng/347110.html 转载请保留说明!

上一篇:SQL cursor用法实例(sql中cursor是什么意思)

下一篇:SQL多表连接查询实例分析(详细图文)(sql多表连接查询效率)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络