SQL 语句优化 GROUP BY 使用 HAVING 查询非常慢,和不添加筛选条件情况相差几十倍速度

这是不加HAVING 条件的,时间不到1S
这是添加HAVING 条件,为了赛选Ks_Student_List(课消表) 学员课消次数大于3,时间超过30S
使用HAVING 添加条件赛选,为了赛选Ks_Student_List(课消表) 学员课消次数大于3,效率极低,不明原因,请大神指点

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
sql的where语句中查询某个时间之后的话速度异常慢
有点2的问题!直接上图 这个时间段是很快的
同时有COUNT(DISTINCT)和GROUP BY的慢查询sql优化实例
项目中碰到一个慢查询,里面既有COUNT(DISTINCT),又有GROUP BY,查询性能很差,26万条数据查询下来需要18秒,sql如下SELECT a.channel_code AS channelCode, a.channel_name AS channelName, DATE_FORMAT(a.create_date, '%Y') AS orderDate, COUNT(DIST...
对group by的结果集进行分组过滤 where 与 having 用法的区别
where过滤无法做到,因为where语句的执行在分组之前,因此过滤在分组之前。并且,where只能过滤行,不能过滤分组。(where中不能使用聚合函数) having可以对group分组的结果集进行过滤,因其执行在分组之后,并其过滤可以基于分组聚集值。(having子句中可以直接使用聚合函数) 有这样的说法,“having子句中的列只能是group by子句中的列或者聚合函数的列”。
sql语句中 group by 和 having 的使用
group by name :意为对name进行分组(name表示属性) group by name having 条件A :意为对name分组后,再根据条件A进行删选   例子: 表table name     course    score A            数学        80 A            科学        90 A            语文  ...
关于 where条件下加了子查询 导致速度巨慢的解决方案
问题源自一个sql代码 select count(1) "rwsl", count(decode(xx.FPSJ,null,null,1)) "fpsl", count(decode(xx.HSSJ,null,null,1)) "fksl", count(decode(mx.NEXT_CLHJ,'HSJGCH',1,null)) "hsjgch", count(...
SQL语句Group By和Having需要注意的地方
SQL语句Group By、HavingGroup By语句需要注意的地方
Oracle_4th_分组(group by)和筛选(having)
介绍了分组和对分组结果进行筛选的例子。
数据库 sql语句中where和having的区别 、having的使用、SQL中Group By的使用
having 和where 都是用来筛选用的 having 是筛选组 而where是筛选记录 他们有各自的区别 1》当分组筛选的时候 用having 2》其它情况用where ----------------------------------------------------- 用having就一定要和group by连用, 用group by不一有having (它只是一个筛选条
【mysql】group by 特别慢,优化方法
默认情况下,MySQL对所有GROUP BY col1,col2…的字段进行排序。 如果查询包括GROUP BY,想要避免排序结果的消耗,则可以指定ORDER BY NULL禁止排序。 修改为: ...
sql视图加where之后查询速度很慢-----sql优化(持续更新中)
select s.row_id,s.money  from v_school s where s.money>1000 (其中v_school是视图)这个查询很慢,一开始搞不懂为什么,后来发现s.money是在视图里面经过复杂运算得到的。 原因解释:因为v_school查出的每条数据,每次都会比较where后面的s.money>1000,而这个视图数据是百万级的,所以得比较上百万次复...
[mysql]SQL语句性能优化--Group by中执行慢性能差的原因调查与处理
1. mysql在数据量较大的时候、使用group by查询结果集时速度很慢的原因可能有以下几种:1) 分组字段不在同一张表中2) 分组字段没有建索引3)分组字段加DESC后索引没有起作用(如何让索引起作用才是关键、且听下文分解)4)分组字段中加函数导致索引不起作用(这种一定要避免、本文不对这种情况展开说明)5)分组字段中含有TEXT或CLOB字段(改成VARCHAR字段)2.今天讲讲多表关联、但...
sql中使用or查询很慢
最近在做一个项目,发现数据较多时(几万条)使用or查询很慢,查找资料有的说是or原因,改成uunion ,因为改起来比较麻烦,就把or条件中的字符比较,转换成数字后再测试,查询速度大大提升。...
sql语句中过滤条件where和having的区别
Where 是一个约束声明,使用Where约束来自数据库的数据,Where是在结果返回之前起作用的,Where中不能使用聚合函数。 Having是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在Having中可以使用聚合函数。 在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行。而where子句在查询过程中执行优先级高于聚合语句。
Oracle中SQL语句学习五(统计分组语句group by和having)
在应用系统开发中,进行需要统计数据库中的数据,当执行数据统计时,需要将表中的数据进行分组显示,在统计分组中是通过group by子句、分组函数、having子句共同实现的。其中group by子句用于指定要分组的列,而分组函数用户指定显示统计的结果,而having子句用户限制显示分组结果。     一、分组函数     分组函数用于统计表的数据,并作用于多行,但是返回一个结果,一般情况下,分组
SQL关于加参数/变量查询很慢的问题
加参数查询很慢的问题,不加的话查询就很快。 有时候是参数嗅探引起的。 如果在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然 而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。如下面语句将进行全表扫描: select id from t where num ...
sql语句中GROUP BY 和 HAVING的用法
having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前。而 having子句在聚合后对组记录进行筛选。 SQL实例: 一、显示每个地区的总人口数和总面积. SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region 先以r...
having和where的性能比较
select deptno,avg(sal) from emp group by deptno having deptno=10 --------------------------------------- select dpetno,avg(sal) from emp where deptno=10 group by deptono ---------------------
mysql group by内排序的实现以及having和where 条件语句查询的区别
例如有一个 版本号的登陆日志表,loginlog( id, LoginName, Resource, IP, LoginTime, loginversion) , id 为 自动增长字段,loginname为登陆用户名,   logintime 为最近一次登陆时间,loginversion为登陆的版本号 现在要求 选出 每个用户名的最近一次登陆的版本号(注意:用户名不能重复且必须覆盖所有数据库
oracle学习笔记(聚合函数以及group by 和having 的用法)
今天学习了聚合函数以及group by 的用法。       oracle的聚合函数: count(*|列)     --- 统计列的数目 例select  count (*) from emp where empno avg(数值型列)---返回列的平均值(如求平均薪水)select  avg (sal ) from emp ; sum(数值型列)-- 返回列中数值的求和 max(列)
sql中where、having、group by、order by执行和书写顺序
文章转载https://www.cnblogs.com/Jessy/p/3527091.html where和having区别: 1.having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。 2.where肯定在group by 之前,即也在having之前。 3.where后的条件表达式里不允许使用聚合函数,而having可以。 g...
巧用groupby解决Dataframe筛选分组效率慢问题
原代码:for name in list_valid_perfor_inventory: time_stamp = time.time() df_tmp1 = df_all_performance[df_all_performance['res_ins_id'] == name] ###170万行,该语句大约需要2S if df_tmp1.empty: co...
针对where条件中日期型字段前面加函数的慢查询的优化
当字段上创建了索引,但是where条件中该列前面加了函数时,会使索引失效。有时候可以通过改写sql来优化。 如: select count(*) from T_SYNCLOG where TO_DAYS(NOW()) - TO_DAYS(CREATE_TIME) = 0 and STATUS=0 and ENTITY_TYPE='org'; 推断该sql含义是查看创建日期为今天的记录条数
【SQL】分组数据,过滤分组-group by , having
创建分组 - GROUP BY
MySQL-分组查询(GROUP BY)及二次筛选(HAVING)
MySQL-分组查询(GROUP BY)及二次筛选(HAVING) 原创 2015年03月06日 15:05:09 11747 为了测试GROUP BY 语句,我们创建两张表,并往表中添加数据 -- 创建部门表 CREATE TABLE IF NOT EXISTS department( id TINYINT UNSIGNED AUTO_INCREMEN
Oracle sql 优化:增加order by 慢 去掉之后就变快 解决办法
一 问题背景: 1.oracle的版本的为11g 2.数据是由生产库导入部分数据至开发库 3.表为范围分区表 4.order by 的字段为分区表的分区字段 5.数据记录大概有一千万; 5.使用的分析工具为toad10 二 问题描述 1.加上order by的执行计划: 2.去掉order by的执行计划: 三问题分析    步骤1:表order by的字段,
SQL优化--加where条件加快查询速度
做了一个项目,开始数据量不多,只有几十上百条数据,查询效率不用考虑,后面项目在自测的时候,把每张表数据加到上百万条,查询效率变得慢了很多,有时候要卡十几分钟,这显然要让人抓狂的,页面一直在加载,然后接下来的工作就是要优化查询,首先想到是给要查询的数据那张表加索引 加完索引,顿时心情就变好了,页面数据加载再也不用等那么久了,心情很舒畅,但是觉得这还不够,还需要在SQL语句上优化,这次做的比较简...
MSSQL语句的性能调试(三)使用JOIN,ON条件的优化。
当SELECT数据的时候,有时候会JOIN超过2个表的。这个时候,如果JOIN的链接上写得不好,会有性能上的区别。这里简单以例子来说明一下。 在例子里,我介绍有3个表A,B和C,三个表里都有一个字段InvoiceID. InvoiceID 在A里是主键。 代码一: SELECT A.* FROM A INNER JOIN B ON B.invoiceId = A.invoiceI
SQL Server中的having(对分组后的信息过滤)
零、码仙励志 趁年轻去努力,别对不起你儿时吹的牛逼 一、建库和建表 create database scort use scort create table emp ( empno int primary key, ename nvarchar(10), sal int, deptno int ) insert into emp values (7369,'smith',1800,...
Elasticsearch 中如何巧妙地使用聚合函数达到数据库中having的效果
在现实开发中难免会遇到一些业务场景,通过聚合得出相应的频次并进行筛选1.使用 minDocCount  直接上代码,大家可自行根据业务场景更改//正确答案 SearchRequestBuilder search = transportlient.prepareSearch("bigdata_idx_2").setTypes("captureCompare"); FilterAggregationB...
数据库中经常分组查询的表如何做性能优化(group by)
一、原sql SELECT U.NAME        AS NAME,        U.ACCOUNT,        U.REGION_NAME,        U.ORG_NAME,        L.LOGIN_TIME  AS M   FROM PUB_USER U,        (SELECT t.CREATOR, MAX(t.LOGIN_TIME) LOGIN_TI
分组后的筛选子句HAVING
分组后的筛选子句HAVING:语法:SELECTFROMWHERE 分组前,行做筛选GROUP BYHAVING 分组后条件筛选ORDER BY;注意: 1.执行顺序:FROM->WHERE,行筛选->GROUP BY,对筛选后结果分组-> HAVING,对分组后的结果筛选->SELECT->ORDER BY 2.HAVING在是GROUP BY基础之上,没有GROU...
MYSQL查询语句 group by 与having count()讲解--玉米都督
    在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数,  例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。  SELECT SUM(population) FROM bbc  这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即所有  国家的总...
mysql 对表数据进行求和分组并在结果中筛选符合条件的数据 having group by count
查询table表查询每一个班级中年龄大于20,性别为男的人数 select COUNT(*)as '大于20岁人数',classid  from Table1 where sex='男' group by classid,age having age>20 --需要注意说明:当同时含有where子句、group by 子句 、having子句及聚集函数时,执行顺序如下: --执行wher
数据库group by 两个或以上条件的分析
今天在测试的时候看到了这个东西,平时的时候我们都是使用一个就好了,就是分组显示。突然间的分类了很多种,让我晕了,但是性质还是一样的,就当事一个复习吧!经验的积累。我就是找了别人写的例子,非常的清楚,所以就拿过过来啦!、 首先group by 的简单说明: group by 一般和聚合函数一起使用才有意义,比如 count sum avg等,使用group by的两个要素: 出现在select后面的字
oracle sql中使用了 or 会影响sql执行的效率的解决方法
在oracel  中,  写的SQL用到了 or,  如果太多的话会影响执行的效率,  那么我们可以指定 让优化器执行  将 where后面的or 条件转化为  union  all  的组合查询。/*USE_CONCAT*/ SELECT  /*USE_CNCAT*/  FROM TABLE WHERE id = '123' OR name = '张三'  转化后的结果select * from...
group by 字段 count 中包含子查询 优化 方式
count 分组 统计 时的子查询 优化
SQL语句中同时包含where,groupby,having及聚集函数时
总结: 在SQL语句中同时包含where子句,groupby子句,having子句及聚集函数时的执行顺序: 1.按WHERE 在筛选记录。 2.GROUP BY 子句将WHERE 筛选出的记录进行分组 3.HAVING 将分组后的结果进行过滤。 HAVING子句可以包含聚集函数,先用聚集函数运算再筛     在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言
hive语句优化-通过groupby实现distinct
hive语句优化-通过groupby实现distinct
ThinkPHP--聚合函数及having使用细节
1. $info = $goods -> where()->field(字段)->select(); select()方法 1. 返回一个二维数组信息 2. 返回全部数据表信息 3. 给该方法传递参数  a) select(30)  查询主键值等于30的记录信息 b) select(“10,12,14”)  查询主键值在10、12、14范围的记录信息 1. find()如果我们查询
hive:(group by, having;order by)的使用;group by+多个字段,以及wiki说的group by两种使用限制验证
hive上 查询 hive> select * from app_data_stats_historical where os='1' group by dt limit 100; 出现结果如下: 2014-01-01 2014-01-06 2014-01-13 2014-01-20 2014-01-27 2014-02-01 2014-02-03 2014-02-04 20
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 nlp培训非常强调 使用ios来添加课程表

相似问题

0
SQL 语句优化 GROUP BY 使用 HAVING 查询非常慢,和不添加筛选条件情况相差几十倍速度
1
inux 子线程执行完成后为什么使用ps命令依然能够看到该子线程
0
vmware安装fedora是显示这个页面就一直不动了 ,是什么原因? 附图。
1
SAP 使用SD_CUSTOMER_MAINTAIN_ALL 独立地址通讯批量导入
3
关于数据库中NOT IN与where条件的误用迷惑
0
使用轮转法,ABCD四个进程,在同一时间提交,执行时间为10s/6s/4s/8s,时间片长度为2s
1
在命令行使用jdk提供的wsimport解析webservice提供的wsdl文件时出现错误
0
关于使用Basy3板进行FPGA设计的小游戏
0
cmroute.dll 批量添加路由表 指定跃点 不生效?
6
mybatis 执行带多行sql 查询语句
3
delphi 关于webbrowser,非常奇怪的事情?
2
ssm+dubbo框架 自己的service端运行不报错 web运行也不报错 一旦访问就报错
3
Oracle执行create view语句时提示ORA-00998:必须使用列别名命名此表达式
1
用VB打开EXCEL文件,EXCEL里的MX SHEET加载项不显示也不启动了
2
Python使用类装饰器出现报错:TypeError: test2() missing 1 required positional argument: 'b'
2
javascrpt语言,div到div之间的传值和连动,不经过后台传值怎么做?
1
javascpt的语言,怎么要求3个文本框有且只有1个填写。3不能写死,以后可能有4个5个选项的
0
std::list使用std::set_union 进行求并集,编译运行后得到的结果是 std::list::size()值很大
1
Xamarin移动开发中使用SkiaSharp遇到的中文乱码问题(已解决)
2
急!!CSharp下载的项目工具箱里有一些自定义控件但是不知道如何添加进去的