当前位置:  数据库>sqlserver

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

    来源: 互联网  发布时间:2014-10-12

    本文导语:  代码如下:SET @SQL = 'SELECT * FROM Comment with(nolock) WHERE 1=1    And (@ProjectIds Is Null or ProjectId = @ProjectIds)    And (@Scores is null or Score =@Scores)' 印象中记得,以前在做Oracle开发时,这种写法是会导致全表扫描的,用不上索引,不知道Sql...

代码如下:

SET @SQL = 'SELECT * FROM Comment with(nolock) WHERE 1=1
    And (@ProjectIds Is Null or ProjectId = @ProjectIds)
    And (@Scores is null or Score =@Scores)'


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

CREATE TABLE aaa(id int IDENTITY, NAME VARCHAR(12), age INT)
go
CREATE INDEX idx_age ON aaa (age)
GO

2、插入1万条测试数据:

代码如下:

DECLARE @i INT;
SET @i=0;
WHILE @i

    
 
 

您可能感兴趣的文章:

  • Sql学习第一天——SQL 将变量定义为Table类型(虚拟表)
  • SqlServer中用exec处理sql字符串中含有变量的小例子
  • SQL Server表变量与临时表的区别
  • Shell脚本调用Sql脚本并向其中传递变量
  • 谁能告诉我 sql server 2000 jdbc驱动程序应该怎么设置,如果设环境变量怎么设,谢谢!
  • 一个方法中,用Connection con变量连接数据库,执行完sql以后,关闭con,返回resultset,报错“关闭的连接: next”
  • sql server使用变量动态命名临时表表名的例子
  • sql server 表变量与临时表
  • Sql Server遍历表记录的二种方法(表变量与游标)
  • SQL Server遍历表中记录的2种方法(使用表变量和游标)
  • sql 表变量与临时表的实例解析
  • 怎样把变量代进SQL语句
  • 在sql查询中使用表变量
  • SQL Server中临时表与表变量用法区别
  • 关于SQL 存储过程入门基础(变量)
  • sql中参数过多利用变量替换参数的方法
  • 开源跨平台SQL注入漏洞扫描工具 Hexjector
  • LINQ to SQL:处理char(1)字段的方式会引起全表扫描问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • [ODBC SQL Server Driver]连接占线导致另一个 hstmt--------100
  • [Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt
  • 在使用中,经常出现提示为:java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt,是什么意思,怎样解
  • 导致SQL Server索引不可用的几种Sql语句写法
  • 格式导致的Excel导入sql出现异常的解决方法
  • sql server日志文件自动增长导致连接超时的解决方法
  • SQL Server误区30日谈 第2天 DBCC CHECKDB会导致阻塞
  • sql自增长标识导致导入数据失败的处理方法
  • sql自动增长标识导致导入数据问题的解决方法
  • 关于SQL执行计划错误导致临时表空间不足的问题
  • SQL有外连接的时候注意过滤条件位置否则会导致网页慢
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍
  • SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
  • java命名空间java.sql接口rowid的类成员方法: tostring定义及介绍
  • SQL客户端管理工具 SQuirreL SQL Client
  • java命名空间javax.sql.rowset接口joinrowset的类成员方法: getwhereclause定义及介绍
  • IT科技资讯 iis7站长之家
  • java命名空间java.sql接口statement的类成员方法: execute定义及介绍
  • sql2005 大数据量检索分页的sql代码
  • java命名空间java.sql接口resultset的类成员方法: getcursorname定义及介绍
  • 如何实现连接一次数据库,提交多个sql语句。(sql的批处理)




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3