常见的聚合查询

举报
上善若水. 发表于 2022/09/12 00:46:23 2022/09/12
【摘要】 常见的聚合查询?使用聚合函数的查询就是聚合查询。所有的聚合函数(UDAF)都应该支持分组查询,内置的聚合函数有: sum(列名) 求和      max(列名) 最大值     min(列名) 最小值     avg(列名) 平均值     first(列名)   第一条记录   last(列名)    最后一条记录  count(列名)   统计记录数   注意和count(*)的区别re...

常见的聚合查询?

使用聚合函数的查询就是聚合查询。所有的聚合函数(UDAF)都应该支持分组查询,内置的聚合函数有:

 

sum(列名) 求和      

max(列名) 最大值     

min(列名) 最小值     

avg(列名) 平均值     

first(列名)   第一条记录  

last(列名)    最后一条记录 

count(列名)   统计记录数   注意和count(*)的区别

ref SQL 聚合查询

 

几种关联查询?

1) 内连接(自然连接):只返回匹配的行,如 Inner JoinUnion Join

 

2)外连接:返回一个表的全集,如 LeftRightFull Cross

 

ref SQL多表查询

 

Where Having 的区别?

where 子句的作用是在对查询结果进行分组前,将不符合条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。

 

having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

 

总结一下条件的过滤顺序:on->join->where->group by->having

 

SQL 关键字的执行顺序?

 

 

ref SQL的执行顺序

 

In Exists 的区别?

in 适合内表比外表数据小的情况,exists 适合内表比外表数据大的情况。如果查询的内外表大小相当,则二者效率差别不大。

 

ref SQL语句中existsin的区别

 

Union Union All 的区别?

Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序

 

Union All:对两个结果集进行并集操作,包括重复行,不进行排序

 

Union 因为要进行重复值扫描,所以效率低。如果合并没有刻意要删除重复行,那么就使用Union All

 

ref unionunion all的区别

 

DropDelete Truncate 的区别?

虽然通过 deletetruncatedrop 这三个关键字都可以用来删除数据,但场景不同。

 

从执行速度上讲:drop > truncate >> DELETE

 

区别       Delete     Truncate Drop

SQL类型 属于DML      属于DDL       属于DDL

支持回滚       支持       不支持    不支持

删除内容       表结构还在,删除表的全部或部分数据    表结构还在,删除表中所有数据       从数据库中删除表的所有数据,包括索引和权限

执行速度       速度慢,需要逐行删除       速度快    速度最快

ref deletetruncatedrop的区别有哪些,该如何选择

优化

一条 SQL 是如何执行的?

ref sql执行过程

 

如何判断 SQL 是否走了索引?

EXPLAIN 命令是查看查询优化器如何决定执行查询的主要方法,使用 EXPLAIN 只需在查询语句开头增加 EXPLAIN 这个关键字即。

其结果中的几个重要参数:

id

ID 代表执行 select 子句或操作表的顺序,如果包含子查询,则会出现多个 ID。值越大,优先级越高,越先被执行。值相同的按照由上至下的顺序执行。

select_type(查询类型)

查询类型主要用于区别普通查询、联合查询以及子查询等复杂查询。

table

type

查询扫描情况,最好到最差依次是:system>const>eq_ref>ref>range>index>All,一般情况下至少保证达到 range 级别,最好能达到 ref

possible_keys

显示可能应用在这张表中的索引,一个或多个。查询到的索引不一定是真正被使用。

key

实际使用的索引,如果为 null 则表示没有使用索引。因此会出现 possible_keys 列有可能被用到的索引,但是 key 列为 null

key_len

表示索引中使用的字节数,在不损失精确性的情况下长度越短越好。key_len 显示的值为索引字段的最大可能长度,并非实际使用长度。即 key_len 是根据表定义计算而来。

ref

显示索引的哪一列被使用了,如果可能的话是一个常数,哪些列或常量被用于查找索引列上的值。

rows

根据表统计信息及索引选用情况,估算出找到所需的记录所需要读取的行数。

Extra

ref EXPLAIN的参数解析及简单应用

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。