首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

group by 慢查询优化

一、问题背景 现网出现慢查询,在500万数量级的情况下,单表查询速度在30多秒,需要对sql进行优化,sql如下: 我在测试环境构造了500万条数据,模拟了这个慢查询。...简单来说,就是查询一定条件下,都有哪些用户的。很简单的sql,可以看到,查询耗时为37秒。...二、看执行计划 可以看到,group by字段上我是加了索引的,也用到了。 三、优化 说实话,我是不知道该怎么优化的,这玩意还能怎么优化啊!先说下,下面的思路都是没用的。...思路二: where条件太复杂,没索引,导致查询慢,但我给where条件的所有字段加上了组合索引,也还是没用 思路三: 既然group by慢,换distinct试试??...虽然知道group by和distinct有很小的性能差距,但是真没想到,差距居然这么大!!!大发现啊!!

83120

Linux之|etc|group文件

用户组(Group)配置文件主要有 /etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密信息文件。.../etc/group文件作用 /etc/group文件是用户组的配置文件,内容包括用户和用户组,并且能显示出用户是归属哪个用户组或哪几个用户组,因为一个用户可以归属一个或多个不同的用户组;同一用 户组的用户之间具有相似的特征.../etc/group文件格式 /etc/group的内容包括用户组(Group)、用户组口令、GID及该用户组所包含的用户(User),每个用户组一条记录 group_name:passwd:GID:user_list...第一字段(group_name):用户组名称; 第二字段(passwd):用户组密码; 第三字段:GID 第四字段(user_list):用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为

2.2K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux之|etc|group文件

    用户组(Group)配置文件主要有 /etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密信息文件。.../etc/group文件作用 /etc/group文件是用户组的配置文件,内容包括用户和用户组,并且能显示出用户是归属哪个用户组或哪几个用户组,因为一个用户可以归属一个或多个不同的用户组;同一用 户组的用户之间具有相似的特征.../etc/group文件格式 /etc/group的内容包括用户组(Group)、用户组口令、GID及该用户组所包含的用户(User),每个用户组一条记录 group_name:passwd:GID:user_list...第一字段(group_name):用户组名称; 第二字段(passwd):用户组密码; 第三字段:GID 第四字段(user_list):用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为...原文链接:https://rumenz.com/rumenbiji/linux-etc-group.html

    2.2K20

    Mysql常用sql语句(12)- group by 分组查询

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 group by 关键字可以根据一个或多个字段对查询结果进行分组...group by 一般都会结合Mysql聚合函数来使用 如果需要指定条件来过滤分组后的结果集,需要结合 关键字;原因:where不能与聚合函数联合使用 having group by 的语法格式 GROUP...group by 单字段分组的栗子 对sex单个字段进行分组查询 select * from yyTest group by sex; ?...知识点 多个字段分组查询时,先按照第一个字段分组,如果第一个字段有相同值,则把分组结果再按第二个字段进行分组,以此类推 如果第一个字段每个值都是唯一的,则不会按照第二个字段再进行分组了,具体原理可看下图...group by + group_concat()的栗子 group_concat()可以将分组后每个组内的值都显示出来 select department,group_concat(username)

    2K20

    Group by中子查询order by排序失效问题分析

    通过sql分组查询数据时,一般通过group by来完成,group by默认取相同的分组列(一列或者多列)中第一个数据。...id最大的记录,我们可能想到的sql如下(name列作为分组): select id,name from (select id,name from tt order by id desc) as t group...因为mysql 5.6之后版本对排序的sql解析做了优化,子查询中的排序是会被忽略的,所以上面的order by id desc未起到作用。.../ 输出结果如下: id,name 2,name1 4,name2 其实除了group by获取分组最后一个记录之外,还可以通过关联子查询方式来实现: select id,name from tt a...by和关联子查询两种方式的实现,获取分组的最后一条记录要么直接通过分组直接来获取,要么先获取到记录关键key然后通过关键key获取对应的记录即可。

    3.1K30

    SQL Server AlwaysOn Availability Group On Linux

    SQL Server Always On Availability Group 配置 步骤: 配置三台 Linux 集群节点 创建 Availability Group 配置 Cluster Resource...配置三台 Linux 集群节点 在集群中的三台服务器之间可以互相通信 安装 SQL Server 在 Linux 上,往集群管理器中添加集群资源时,一定是先建立集群资源,接着将新建的资源加入到集群中去。...理念和两台 Linux 服务器之间无密通信一样,一个公钥,一个私钥。公钥用来核实私钥的有效性,分发到各个服务器上,作为访问远程服务的凭证。...[crmag] grant create any database ; 我们在这里指定了 external 的集群管理方式,那么就需要在 Linux 上安装独立的集群管理软件,通常用...但理论上也应该有其他的集群管理软件,比如 Mesos, Linux Cluster Manager(LCM) 等。

    2K10

    记一次神奇的sql查询经历,group by慢查询优化

    一、问题背景 现网出现慢查询,在500万数量级的情况下,单表查询速度在30多秒,需要对sql进行优化,sql如下: ? 我在测试环境构造了500万条数据,模拟了这个慢查询。...简单来说,就是查询一定条件下,都有哪些用户的。很简单的sql,可以看到,查询耗时为37秒。...可以看到,group by字段上我是加了索引的,也用到了。 三、优化 说实话,我是不知道该怎么优化的,这玩意还能怎么优化啊!先说下,下面的思路都是没用的。...思路二: where条件太复杂,没索引,导致查询慢,但其实哪怕where条件不动,只要把group by去掉,就非常快。所以应该也不是where条件的问题。 ?...虽然知道group by和distinct有很小的性能差距,但是真没想到,差距居然这么大!!!大发现啊!!

    1.2K20

    记一次神奇的SQL查询经历,group by慢查询优化

    我在测试环境构造了500万条数据,模拟了这个慢查询。 简单来说,就是查询一定条件下,都有哪些用户的。很简单的sql,可以看到,查询耗时为37秒。...可以看到,group by字段上我是加了索引的,也用到了。 三、优化 说实话,我是不知道该怎么优化的,这玩意还能怎么优化啊!先说下,下面的思路都是没用的。...思路二: where条件太复杂,没索引,导致查询慢,但我给where条件的所有字段加上了组合索引,也还是没用 ? ? 思路三: 既然group by慢,换distinct试试??...虽然知道group by和distinct有很小的性能差距,但是真没想到,差距居然这么大!!!大发现啊!!...最后再对比下改前后的执行计划: 改之前(查询要1分钟左右): ? 改之后(查询只要几百毫秒): ?----

    1.2K20

    深入SQL执行计划之CBO查询转换(4):Group By 配置最优机能(Group By Placement)

    之前讲过的转换是当存在 View,子查询时,把子查询展开,或者把谓词下推给子查询。 那是不是说 CBO 只是盯着 View,或子查询来做工作呢,结论当然不是了。...比如2张表进行结合,并对其中一个表进行了 Group by 操作时,如果能先进行 Group by 的结果集再和另外的表进行结合的话,可能会有更好的效果。...于是乎,就有了Group By 配置最优机能(Group By Placement)。...Group By 配置最优机能(Group By Placement) 还是老样子,先看看最初没经过转换时的样子。...C1") 当然是先正常的 t1 t2 的结合,结合后的结果再进行 GROUP BY。 接下来,我们再看看 Group By 配置最优机能动作时的样子。

    23520

    group by 报错_group by null

    ,存在则个数加1,不存在则插入新数据 mysql官方规定,查询时使用rand()函数时,该值会计算多次,即查看虚拟表中是否含有这个数据时,rand函数计算一次,当数据不存在时,会插入数据(rand函数计算的值...x (select floor(rand(0)*2) as x,count(*) from test group by x) 当查询第一个数据时,x的第一个值是0,在虚拟表中没有这个数据,所以插入数据...,count值加1,插入时floor(rand(0)*2)会再被计算一次,值为1,即插入的数据是1,并不是0 查询第二个数据,此时x的值为1,存在这个数据,count值加1,不需要插入数据,所以...floor(rand(0)*2)不会被再次计算 继续查询数据,此时x值为0,虚拟表中不存在0,所以要插入新数据,此时floor(rand(0)*2)再次被计算,值为1,但是floor(rand...(0)*2)是主键,不能被重复,所以此时会报错,报错内容是 1这个主键重复 虚拟表总共查询的次数为三次,所以floor报错注入满足的条件是数据库中要查询的数据至少3条以上。

    1.3K10

    记一次详细的的SQL查询经历,group by慢查询优化

    一、问题背景 现网出现慢查询,在500万数量级的情况下,单表查询速度在30多秒,需要对sql进行优化,sql如下: ? 这里测试环境构造了500万条数据,模拟了这个慢查询。...简单来说,就是查询一定条件下,都有哪些用户的。很简单的sql,可以看到,查询耗时为37秒。...可以看到,group by字段上是加了索引的,也用到了。...思路二: where条件太复杂,没索引,导致查询慢,但给where条件的所有字段加上了组合索引,没起作用。 ? ? 思路三: 既然group by慢,换distinct试试 ? 瞬间就加快了。...虽然知道group by和distinct有很小的性能差距,但是没想到,差距居然这么大。 四、你以为这就结束了吗 ---- 这个bug转给测试后,测试一测,居然还是30多秒。

    1.9K10

    Linux 中的 Process Group 和 Session

    使用了这么多年的 Ubuntu, 自以为 Linux 下进程的概念已经很熟悉了, 然而发现进程组(Process Group)和会话(Session)两个概念日常并不会接触很多, 平时也没有注意, 导致今天遇到一个问题还想了半天才想明白...看了一些讲进程控制的书和文章, 感觉都比较老了, 不少都还在讲 double fork 的原理及意义, 而现实是 systemd 已经接管了几乎整个 Linux 世界, double fork 这种东西真的不应该存在了...进程可以理解为 "进行中的程序", 在 Linux 上可以通过 fork 来创建新的进程, 然后可以使用 exec 来在子进程或者父进程中执行新的程序....leader 退出可能造成 orphaned process group, 因此在shell中, 一般情况下会造成进程退出的情况 Orphaned Process Group 当一个 group leader...https://superuser.com/questions/403200/what-is-a-stopped-process-in-linux

    1.7K20

    SAP RETAIL 事务代码RWBE查询界面上的Plant Group

    SAP RETAIL 事务代码RWBE查询界面上的Plant Group 1,如下的plant group, 代码是Z_NM_SITEGRP , Class type 是030 - Plant 试图在执行事务代码...RWBE查询库存的时候,输入这个plant group去批量查多个工厂下某些物料的库存, 未能成功,因SAP报错说:plant group Z_NM_SITEGRP unknown. 2,点击Plant...group输入框右边的按钮去查询plant group, 在弹出的查询窗口上,系统默认是查035类型的plant group(class). 3,看这个字段的帮助文档, 说明在这个事务代码里...,如果要根据plant group进行查询,则要求该plant group的class type是035的。...然后保存, 6, 再来执行RWBE报表查询库存, 得到如下报表结果: -完- 写于2021-11-5.

    52510

    玩转Mysql系列 - 第8篇:分组查询详解(group by & having)

    本篇内容 分组查询语法 聚合函数 单字段分组 多字段分组 分组前筛选数据 分组后筛选数据 where和having的区别 分组后排序 where & group by & having & order...by & limit 一起协作 mysql分组中的坑 in多列查询的使用 分组查询 语法: SELECT column, group_function,......分组中,select后面只能有两种类型的列: 出现在group by后的列 或者使用聚合函数的列 聚合函数 函数名称 作用 max 查询指定列的最大值 min 查询指定列的最小值 count 统计查询结果的行数...建议:在写分组查询的时候,最好按照标准的规范来写,select后面出现的列必须在group by中或者必须使用聚合函数。...总结 在写分组查询的时候,最好按照标准的规范来写,select后面出现的列必须在group by中或者必须使用聚合函数。

    8.6K31

    linux etc下 passwd、shadow和group文件详解

    /etc/group文件是有关于系统管理员对用户和用户组管理的文件,linux用户组的所有信息都存放在/etc/group文件中。 一....在Linux系统中,这个界限是500。 . 组标识号(GID):字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。 ....在不同的Linux系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。 ....Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。.../etc/group文件 此文件的格式是由冒号(:)隔开若干个字段,这些字段具体如下: 组名:口令:组标识号:组内用户列表 具体解释: 组名:组名是用户组的名称,由字母或数字构成。

    5.6K90
    领券