脚本宝典收集整理的这篇文章主要介绍了SQL中WHERE变量IS NULL条件导致全表扫描问题的解决方法,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
2、插入1万条测试数据:
4、开始测试,用下面的SQL进行测试:
可以看到,即使@i有值,不管@i IS NULL是放在前面还是放在后面,都无法用到age的索引,另外age=ISNULL(@i,age)也用不上索引
最终结论,SQL Server跟ORACLE一样,如果条件里加了 变量 IS NULL,都会导致全表扫描。
建议SQL改成:
DECLARE @sql NVARCHAR(MAX)
SET @sql = 'SELECT * FROM aaa'
IF @i IS NOT NULL
SET @sql = @sql + ' WHERE age = @i'
EXEC sp_executesql @sql, N'@i int', @i
但是,如果条件多了,SQL数目也变得更多,所以建议用EXEC的方案
以上是脚本宝典为你收集整理的SQL中WHERE变量IS NULL条件导致全表扫描问题的解决方法全部内容,希望文章能够帮你解决SQL中WHERE变量IS NULL条件导致全表扫描问题的解决方法所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。