原文:http://blog.csdn.net/showshore/article/details/7263115

---------------------------------------------------------

在做项目的过程中,使用sql语句时,很多时候会用到where或having。

看到国外一个论坛上有人提到两者性能比较的这个问题时,有人是这样回答的:

The theory (by theory I mean SQL Standard) says that WHERE restricts the result set before returning rows and HAVING restricts the result set after bringing all the rows. So WHERE is faster. On SQL Standard compliant DBMSs in this regard, only use HAVING where you cannot put the condition on a WHERE (like computed columns in some RDBMSs.)

也就是说(从理论上讲),where是在查询前做条件限制,having是在查询后的结果集上做条件限制。

查询前做限制的话,返回的件数会少;而在查询后的结果集上做限制的话,之前的查询结果可能会很多,这样就会影响性能。

所以,一般是用where,having是在where不方便或者不能使用的情况下才使用。

SQL中,where 与 having 的性能比较相关推荐

  1. SQL中使用WITH AS提高性能-使用公用表表达式(CTE)简化嵌套SQL

    一.WITH AS的含义     WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到.有的时候, ...

  2. mysql not in 性能_SQL中Execpt和not in 性能区别

    本文章介绍关于SQL中Execpt和not in 性能区别 ,有需要的同学可以仔细的看看这两个的性能哦. 主要讲 except 和 not in 的性能上的区别. 代码如下 复制代码 CREATE T ...

  3. sql中varchar(n),nvarchar(n) 长度性能及所占空间分析

    sql中varchar(n),nvarchar(n) 长度性能及所占空间分析 1.varchar(n),nvarchar(n) 中的n怎么解释: nvarchar(n)最多能存n个字符,不区分中英文. ...

  4. sql中NVARCHAR(MAX) 性能和占空间分析 varchar(n),nvarchar(n) 长度性能及所占空间分析

    sql中NVARCHAR(MAX) 性能和占空间分析 varchar(n),nvarchar(n) 长度性能及所占空间分析 观此文描述较为全面,故此转载.原地址: sql中NVARCHAR(MAX) ...

  5. SQL中IN与EXISTS的比较

    为什么80%的码农都做不了架构师?>>>    由于要使用 in,后来在网上找找了,发现有如下文章,大家共享一下.一起进步啦. 使用in的话,如果存在索引,和使用 join 性能差别 ...

  6. SQL中的join操作总结(非常好)

    1.1.1 摘要 Join是关系型数据库系统的重要操作之一,SQL Server中包含的常用Join:内联接.外联接和交叉联接等.如果我们想在两个或以上的表获取其中从一个表中的行与另一个表中的行匹配的 ...

  7. SQL中的Where,Group By,Order By和Having的用法/区别

    GROUP BY 是分组查询, 一般 GROUP BY 是和 聚合函数配合使用,你可以想想 你用了GROUP BY 按  ITEM.ITEMNUM 这个字段分组,那其他字段内容不同,变成一对多又改如何 ...

  8. 长sql和短sql加java区别_Mybatis下动态sql中##和$$的区别讲解

    一.介绍 mybatis 中使用 Mapper.xml里面的配置进行 sql 查询,经常需要动态传递参数,例如我们需要根据用户的姓名来筛选用户时,sql 如下: select * from user ...

  9. Oralce 使用SQL中的exists 和not exists 用法详解

    exists表示() 内子查询返回结果不为空,说明where条件成立就会执行sql语句:如果为空,表示where条件不成立,sql语句就不会执行. not exists和  exists相反,子查询语 ...

  10. 在Linq to Sql中管理并发更新时的冲突(3):使用记录的时间戳进行检测

    我们描述了Linq to Sql检测在更新时是否产生了冲突的基本方法:将该记录每个字段原来的值和更新时的值进行对比,如果稍有不同则意味着记录被修改过,因此产生了更新冲突.不过您是否有这样的感觉,这种方 ...

最新文章

  1. AIFramework框架Jittor特性(下)
  2. 我的Android进阶之旅------gt;Android中通过adb shell input来模拟滑动、按键、点击事件...
  3. 01_字符串处理-----04_在文本中应用ZIpf定律
  4. poj 1703(种类并查集)
  5. Django默认用户认证系统和用户模型类
  6. 译 | 将数据从Cosmos DB迁移到本地JSON文件
  7. 使用Kubeadm创建k8s集群之部署规划(三十一)
  8. 天池 在线编程 旅行计划(暴力回溯)
  9. web系统四层结构中服务器端,基于.NET平台构建四层B/S结构的动态网站
  10. MYSQL导入数据出现ERROR 1049 (42000): Unknown database 'n??;'
  11. iPhone 12延期恐实锤:台积电5nm A14芯片将延期3个月
  12. php ip操作,ip操作 · PHP 个人常用知识总结 · 看云
  13. 政务外网001---政务外网介绍
  14. 如何去除图片背景变透明?透明背景图片怎么做?
  15. 74cms 5.0.1 版本命令执行漏洞复现
  16. 工商银行区块链专利 为提高证书发放的效率
  17. 守望先锋为何如此火爆
  18. clickhouse建表异常 DB::Exception: No macro ‘shard‘ in config
  19. 坑爹的hiredis API使用
  20. 【译】SQ3R学习法则

热门文章

  1. ssh端口转发(之kettle ssh方式连接数据库)
  2. 第2章线性表的基本使用及其cpp示例(第二章汇总,线性表都在这里)
  3. 不规则图形数格子的方法_【微课堂】人教版五年级数学(上)6.5不规则图形的面积图文精讲+教学视频+同步练习...
  4. python扫雷游戏课程设计小组任务计划与分配表_python实现扫雷游戏
  5. apache启动失败_请检查相关配置.√mysql5.1已启动._1、Apache启动失败,请检查相关配置-百度经验...
  6. python解析html xml最好的模块_Python HTML/XML解析器BeautifulSoup(爬虫解析器)
  7. 保留小数点后三位_【Meta分析】Stata制作森林图时,如何保留三位小数?
  8. MyBatis的逆向工程工具,自动生成数据库对应的POJO实体类、mapper接口、增删改查mapper.xml文件
  9. cudnn.deterministic = True 固定随机种子
  10. Angular 6+ 之新版service