SQL中,where 与 having 的性能比较

原文: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不方便或者不能使用的情况下才使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spark 独立部署模式

2019独角兽企业重金招聘Python工程师标准>>> Spark 独立部署模式 博客分类: spark 除了在 Mesos 或 YARN 集群上运行之外, Spark 还提供一个简单的独立部署的模块。你通过手动开始master和workers 来启动一个独立的集群。你也可以利用我们提供的脚本 .…

mysql数据库的链接地址_常用数据库连接URL地址大全

1、Oracle8/8i/9i数据库(thin模式) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID String user="test"; String password="test"; Con…

数据库中where与having区别~~~

1、where和having的执行级别不同 在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。 having就是来弥补where在分组数据判断时的不足。因为where执行优先级别要快于聚合语句。…

spring boot 1.5.4 定时任务和异步调用(十)

1 Spring Boot定时任务和异步调用 我们在编写Spring Boot应用中经常会遇到这样的场景,比如:我需要定时地发送一些短信、邮件之类的操作,也可能会定时地检查和监控一些标志、参数等。 spring boot定时任务spring-boot-jsp项目源码&#…

ORA-04063: view DAILY.TMP_TBX_100_0_S4 有错误

执行: CREATE TABLE TMP_TBX_100_0_S3 AS SELECT t.* FROM (select t1.*,NULL AS sdate, NULL AS report_id from TMP_TBX_100_0_S4_1 t1 union all select t2.* from TMP_TBX_100_0_S4_2 t2) t 报错: ORA-00955: name is already used by an exis…

MySQL左连接还有过滤条件_MySQL左连接问题,右表做筛选,左表列依然在?

问 题原料两张表,一张user表,一张user_log表(这个例子举的不好)CREATE TABLE user (id int(11) NOT NULL AUTO_INCREMENT,name varchar(20) DEFAULT NULL,PRIMARY KEY (id)) ENGINEInnoDB DEFAULT CHARSETutf8;CREATE TABLE user_log (id int(10) NOT NU…

2017工作总结

静儿总结自己的职业生涯分为三个阶段。第一个阶段为期十年,是纯技术阶段,是人生的积累期。第二个阶段是管理阶段,是综合能力整合期。第三个阶段是突破阶段,打造自己独特的核心竞争力。 第一阶段 刚毕业的同学可能会觉得技术高大上…

批量删除table或view

一个个删太费时了。一个简单可行的方法。 思路: 找出要删除的表名/视图名,然后拼接删除sql,执行。 批量删除表: 1、找出要删除的表名select table_name from user_tables where table_name like S1MSGLATENCY_2016032%;2、复制这…

编译安装mysql5.5.39_编译安装MySQL5.5

防伪码:没有相当程度的孤独是不可能有内心的平和。1、测试环境主机名IP系统MySQL版本MySQL-00192.168.10.23CentOS release 6.9 (Final)5.5.562、部署2.1 卸载之前版本rpm -qa|grep mysqlrpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_642.2 安装依赖包和cmakeyum…

你真的了解iOS怎么取属性的吗?

你真的了解iOS怎么取属性的吗? 本文来自CocoaChina粉丝FlyOceanFish投稿如果iOS中谈到取属性,相信大家都会夸夸其谈,不就是get方法吗?或者大谈kvc取属性的机制。不得不说这些也是对的。这时大家可能就疑惑了,那你还要说…

Oracle表的并行度

查看dba_tables数据字典时,可以发现有“DEGREE”字段,这个字段表示的就是数据表的并行度。这个参数的设置,关系着数据库的I/O,以及sql的执行效率。并行度的优点就是能够最大限度的利用机器的多个cpu资源,是多个cpu同时…

mysql 临时表 限制_Mysql临时表

当你创建临时表的时候,你可以使用temporary关键字。如:create temporary table tmp_table(name varchar(10) not null,passwd char(6) not null)‘或CREATE TEMPORARY TABLE IF NOT EXISTS sp_output_tmp ENGINE MEMORY SELECT …from … where IDcurre…

10年老兵给程序员的10条建议!

2019独角兽企业重金招聘Python工程师标准>>> 程序员虽然薪资待遇好,但是也得付出努力,技术好才行。特别是对于刚刚进入编程工作的新手程序员和正在学习编程的同学来说,一写代码就报错,出bug。作为一个工作了10年的老兵…

视图和表的区别和联系

区别: 1、视图是已经编译好的sql语句。而表不是 2、视图没有实际的物理记录。而表有。 3、表是内容,视图是窗口 4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四对它进行修改&#xf…

mysql binlog日志三种格式_MySQL binlog三种格式详细介绍

查看当前数据库binlog日志格式:show global variables like %binlog_format%;一、三种格式介绍1.1 STATEMENT该格式下每一条会修改数据的sql都会记录在binlog中;优点:不需要记录每一行的变化,减少了binlog日志量,节约了…

2017阿里技术年度精选(全)

2019独角兽企业重金招聘Python工程师标准>>> 2017年,在技术发展的历史上,一定是个特别的一年:柯洁与AlphaGo的惊世大战,无人咖啡店开放体验,AI设计师“鲁班”横空出世、三年投入千亿的达摩院正式成立…… 这…

查询Oracle正在执行的sql语句,锁表,解锁

原文出处:http://blog.csdn.net/jlds123/article/details/6572559 ----------------------- --查询Oracle正在执行的sql语句及执行该语句的用户 [sql] view plaincopy SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, …

xampp for mac mysql_xampp for mac下载-Xampp Mac版下载 V7.3.2-PC6苹果网

Xampp for mac是目前时下最流行的PHP开发环境,XAMPP是完全免费且易于安装的Apache发行版,其中包含MySQL、PHP和Perl。XAMPP开放源码包的设置让安装和使用出奇容易。整合型的Apache套件。XAMPP包括Apache、MySQL、PHP、PERL,直接解压缩&#x…

15.2. important

<para><important>Text goes here.</important></para>重要Text goes here.原文出处&#xff1a;Netkiller 系列 手札 本文作者&#xff1a;陈景峯 转载请与作者联系&#xff0c;同时请务必标明文章原始出处和作者信息及本声明。

查看表的创建时间

select OWNER,OBJECT_NAME,CREATED from dba_objects where OBJECT_NAME表名 CREATED 是表的创建时间 查询 dba_objects 表需要dba权限