当前位置: 首页 > news >正文

where 1=-1 and 1=1 会不会影响查询效率?


           

        今天用sql profiler跟一个底层生成的SQL 的时候,跟到这样一段代码:


     

WITH TempQuery AS
(
    SELECT *, ROW_NUMBER() OVER (ORDER BY  CreateTime DESC) AS 'RowNumberForSplit'
	FROM (select E.Name as Name, U.RealyName as RealyName,C.[Description] as Descriptions,'求职者' as tsf ,C.Result,C.CreateTime from [Mr].[User_Complaint] UC inner join [Mr].[User] U on UC.UserCode=U.Code inner join [Mr].[Complaint] C  on UC.ComplaintCode=C.Code inner join [Mr].[Enterprise] E on UC.EnterpriseCode=E.Code union select E.Name as Name, U.RealyName as RealyName,C.[Description] as Descriptions,'企业' as tsf ,C.Result,C.CreateTime from [Mr].[Enterprise_Complaint] EC inner join [Mr].[Enterprise] E on EC.EnterpriseCode=E.Code inner join [Mr].[Complaint] C on EC.ComplaintCode =C.Code inner join [Mr].[User] U on EC.UserCode=U.Code) CP
	WHERE 1 = 1  AND  1=1
	
)
SELECT * 
FROM TempQuery 
WHERE RowNumberForSplit BETWEEN 1 AND 10;
SELECT COUNT(1) AS TOTAL_COUNT FROM (select E.Name as Name, U.RealyName as RealyName,C.[Description] as Descriptions,'求职者' as tsf ,C.Result,C.CreateTime from [Mr].[User_Complaint] UC inner join [Mr].[User] U on UC.UserCode=U.Code inner join [Mr].[Complaint] C  on UC.ComplaintCode=C.Code inner join [Mr].[Enterprise] E on UC.EnterpriseCode=E.Code union select E.Name as Name, U.RealyName as RealyName,C.[Description] as Descriptions,'企业' as tsf ,C.Result,C.CreateTime from [Mr].[Enterprise_Complaint] EC inner join [Mr].[Enterprise] E on EC.EnterpriseCode=E.Code inner join [Mr].[Complaint] C on EC.ComplaintCode =C.Code inner join [Mr].[User] U on EC.UserCode=U.Code) CP WHERE 1 = 1  AND  1=1


       然后你就看到后面跟着的where 1=1 and 1=1,以前也用过这个东西拼过条件,但是后来有人说这样影响查询性能,再后来又有人说不影响。然后我就迷茫了。。。



      还是自己做个实验测试下吧。


       首先,先看一下没有这个条件的查询:


      

/****** Script for SelectTopNRows command from SSMS  ******/
SELECT TOP 100000 [RESOURCE_ID]
      ,[CLASS]
      ,[SORT_ID]
      ,[XML_CONTENT]
      ,[SEARCH_CONTENT]
      ,[ROW_ID]
  FROM [MCS_WORKFLOW].[WF].[GENERIC_FORM_RELATIVE_DATA] WHERE 1=1 AND 1=1

       然后使用执行计划来估计下:

         

       




       然后加入条件:


          

      


在执行计划中可以看到,开销几乎全部在聚集索引表的扫描上,对比上图,发现这两张表数据一致。


       

       

      

     嘿嘿,看来他们的查询效率是一样的。


     but why????百度下吧。。。。







相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 你正在用却不知道它们让微信比其它社交App更强大的6大功能
  • 毕业后两个月的日子--奋斗的菜鸟
  • 关于C++类型检查的一点小挫折
  • MySQL基础(一)
  • rest api方式实现对文档库的管理
  • 程序员的苦与乐
  • 【算法学习笔记】27.动态规划 解题报告 SJTU OJ 1254 传手绢
  • Android 通过代码设置radiobutton不同方位图标的两种方法
  • 【嵌入式开发板】大家都在玩儿的4412开发板
  • Hadoop2源码分析-MapReduce篇
  • CentOS 7安装后配置笔记
  • Linux常用的基本命令11
  • 40策略时独立需求的冲减
  • js里正则表达式详解
  • mysql表的导入导出
  • angular2 简述
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Mysql5.6主从复制
  • node和express搭建代理服务器(源码)
  • React组件设计模式(一)
  • tensorflow学习笔记3——MNIST应用篇
  • vue2.0项目引入element-ui
  • 当SetTimeout遇到了字符串
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 聊聊sentinel的DegradeSlot
  • 前端_面试
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • ​2020 年大前端技术趋势解读
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • # C++之functional库用法整理
  • # include “ “ 和 # include < >两者的区别
  • #include
  • #QT(一种朴素的计算器实现方法)
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (二)JAVA使用POI操作excel
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (附源码)计算机毕业设计ssm电影分享网站
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (六)软件测试分工
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (全注解开发)学习Spring-MVC的第三天
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转) Android中ViewStub组件使用
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .java 9 找不到符号_java找不到符号
  • .net mvc 获取url中controller和action
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .net程序集学习心得