位置: 编程技术 - 正文
印象中记得,以前在做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 语法,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。如上例子,
标签: sql中的where in
本文链接地址:https://www.jiuchutong.com/biancheng/347110.html 转载请保留说明!友情链接: 武汉网站建设