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,变量,NULL,条件,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。上一篇:SQL cursor用法实例