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

SQL极致优化案例:利用索引特性进行maxmin优化

=’OUTLN’ AND OBJECT_TYPE IS NOT NULL; SQL是TEST11和DUAL表相关联,WHERE条件OWNER字段有索引,SQL走了该字段索引范围扫描执行计划,单次执行逻辑读...也就是说,必须条件和索引前导完全匹配,然后取索引里最后一MAX/MIN,它就可以走最优INDEX RANGE SCAN (MIN/MAX)索引。 5....被放在最外层,也就是说对MAX取值是基于关联后结果集而不是基于TEST11。...SQL是TEST11和DUAL做关联,取NVL (MAX (T1.CREATED), SYSDATE) ,即使没有数据也会返回SYSDATE,去掉DUAL不影响,去掉DUALSQL逻辑读降为...WHERE条件TCODE IS NULL可以过滤掉所有数据,但是我们知道NULL是不存在索引,一般情况下IS NULL只能走全,如果全数据非常多SQL性能就会很差。

1.5K20

PostgreSQL查询简介

MIN用于查找指定最小。...JOIN子句可用于组合查询结果两个或多个行。它通过在之间查找相关并在输出适当地对结果进行排序来实现此目的。...为了说明这个想法,让我们在每个添加一个新行,而另一个没有相应条目: INSERT INTO tourneys (name, wins, best, size) VALUES ('Bettye...查询多个另一种方法是使用子查询。子查询(也称为内部或嵌套查询)是包含在另一个查询查询。这些在您尝试根据单独聚合函数结果过滤查询结果情况下非常有用。...但是,有些情况下,外部查询必须首先读取每一行,并将这些与子查询返回数据进行比较,以便返回所需数据。在这种情况下,子查询称为相关子查询。 以下语句是相关子查询示例。

12.3K52
您找到你想要的搜索结果了吗?
是的
没有找到

SQL必知必会总结2-第8到13章

本文是《SQL必知必会》一书精华总结,帮助读者快速入门SQL或者MySQL,主要内容包含: 数据库基础知识 库相关操作 检索数据方法 … 本文中介绍第8到13章,前面的章节请看SQL必知必会总结...汇总数据 聚集函数 聚集函数指的是对某些行运行一个函数,并且返回一个,常用聚集函数有: 函数 作用 AVG() 返回平均值 COUNT() 返回函数 MAX() 返回最大 MIN()...,但是如果COUNT()函数使用是星号,则不会忽略 3、MAX()/MIN()函数 返回指定最大或者最小 SELECT MAX(prod_price) AS MAX_price --...求最大 SELECT MAX(prod_price) AS MIN_price -- 求最小 FROM Products; 笔记:上面的两个最函数会自动忽略掉为NULL行 4、SUM...AND OI.order_num = O.order_num AND prod_id = 'RGAN01' 3、外联结 有时候我们需要将一个行和另一个中行相关联,但是有时候也需要包含那些没有关联行行记录

2.3K21

又见程序媛 | 从索引创建角度分析热门“面试题”

RBO 最大问题是它是靠硬编码在一系列固定规则来决定 SQL 执行计划,而没有考虑目标 SQL 所涉及对象实际数据量、实际数据分布等情况,比如说 RBO 认为索引范围扫描然后回执行计划一定优于全扫描执行计划...,这里成本是指 Oracle 根据相关对象统计信息估算出来一个。...可选择率 Selecticity 是 CBO 特有的概念,指的是施加指定谓词条件后返回结果集行数占未施加任何谓词条件原始结果集行数比率,取值范围是 0-1,越小表明可选择率越好,可选择率和成本估算息息相关...这里解释一下index_join,这是一个针对单hint,目的是让优化器对目标多个索引执行索引合并操作,index_join能够成立前提条件是查询所有都能够从目标索引,即通过扫描目标索引就可以得到所有查询而不用回...当索引根据前缀字段开始范围扫描时,显然没有办法根据后缀字段在链表结构跳跃执行,因此后缀限制条件只能变成FILTER过滤条件。

89240

MySQL调优之查询优化

优化count(),min(),max() 索引和是否可以为空通常可以帮助MySQL优化这类表达式。 例如,要找到某一最小,只需要查询索引最左端记录即可,不需要全文扫描比较。...等值传播 如果两个通过等式关联,那么MySQL能够把其中一个where条件传递到另一个上。...然后根据各个匹配行,返回查询需要各个。...由图可以看到中间有个join buffer缓冲区,它是将驱动r所有join相关都先缓存到join buffer,然后批量与匹配s进行匹配,将Simple NLJ多次比较合并为一次,降低了非驱动...,一般情况下来说,只需要在关联顺序第二个相应列上创建索引。

1.1K10

CMU 15445 学习笔记—2 Advanced SQL

我是以 PostgreSQL 为例进行讲解,但是本文中设计 sql 语法大多比较通用,要是在其他数据库没看到相应用法,可以查看其官方文档,看是否有其他写法或者该 feature 不支持。...,它意思是从某个根据条件查询出某些。...select AVG(gpa) from student; MIN 求最小,通过函数 MIN。 select MIN(gpa) from student; MAX 求最大,通过函数 MAX。...,需要注意几点,一是 select 必须包含在 group by 子句中或者是聚合,例如我在前面的 sql 中加入一个 s.name ,报错信息如下: image.png 二是可以对 group...image.png 下面是一个非常简单例子: with tab as (select 1)select * from tab; 这一节学习了 sql 相关基础知识,由于 sql 语法很多,所以并没有涵盖所有的用法

84050

SQL必知必会》万字精华-第1到13章

] 一、了解SQL 本章主要是介绍了数据库和SQL相关基本知识和术语。...日期和时间处理函数 日期和时间采用相应数据类型存储在,以特殊格式来存储。...函数 作用 AVG() 返回平均值 COUNT() 返回函数 MAX() 返回最大 MIN() 返回最小 SUM() 返回某之和...,但是如果COUNT()函数使用是星号,则不会忽略 3、MAX()/MIN()函数 返回指定最大或者最小 SELECT MAX(prod_price) AS MAX_price -- 求最大...AND OI.order_num = O.order_num AND prod_id = 'RGAN01' 3、外联结 有时候我们需要将一个行和另一个中行相关联,但是有时候也需要包含那些没有关联行行记录

6.9K00

【连载】如何掌握openGauss数据库核心技术?秘诀三:拿捏存储技术(5)

在基于btree扫描,从索引拿到ctid后,需要在对应CUDesc根据CUDesc在cu_id索引找到对应CUDesc记录,并由此打开对应CU文件,根据offset找到数据。...这样可以做到顺序单调索引遍历,大大减少了反复操作文件带来CPU以及IO开销。 2. 稀疏索引 存储引擎每个自带min/max稀疏索引,每个CUDesc存储该CU最小和最大。...那么在查询时候,可以根据查询条件做简单min/max判断,如果查询条件不在(min,max)范围内,肯定不需要读取这个CU,可以大大地减少IO读取,如图31所示。...如果业务初始数据模型较为离散,那么稀疏索引不同CU之间minmax就会有大量交集,这种情况下在给定谓词对进行检索过程,会出现大量CU误读取,甚至可能导致其查询效率与全扫描近似。...根据数据特性不同,压缩比一般可以有3X~20X。 存储引擎支持低、、高三种压缩级别,用户在创建时候可以指定压缩级别。

57950

数据库系统:第三章 关系数据库标准语言SQL

如果主键被另一个引用,Oracle中使用CASCADE constraints选项; 在删除基本同时,相关依赖对象一起删除; 不同数据库产品处理策略不同 3.2.3索引建立与删除 DBA...SQL数据定义语句时,实际上就是在更新数据字典相应信息。...选择若干元组 消除取值重复行 在SELECT子句中使用DISTINCT短语,DISTINCT短语作用范围是所有目标 //DISTINCT同时作用于Grande和Cno,查询选修课程各种成绩...MAX([DISTINCT|ALL] ) 求最小 MIN([DISTINCT|ALL] ) DISTINCT短语:在计算时要取消指定重复 ALL短语:不取消重复,ALL...首先取外层查询中表第一个元组,根据它与内层查询相关属性处理内层查询,若WHERE子句返回为真,则取此元组放入结果; 然后再取外层下一个元组; 重复这一过程,直至外层全部检查完为止。

2.6K10

MySQL行转列

1给出了三个学生三门成绩,而2是将1行记录信息(学科、姓名)转化为信息,并根据不同user_name进行分组显示。...1 case when操作方法 要实现上面的功能,我们需要进行分析,首先,我们需要生成三个,分别是数学,语文和英语,然后给每个填入对应数据。...,根据SQL规则,我们可以把'语文'和'英语'也加入进去,一次性多写几个,如下: mysql-yeyz ::>>SELECT user_name , -> (CASE course...由于每条记录只包含当前学科成绩,其他学科成绩为0,所以我们使用MAX函数和SUM函数结果是相同,但是不能使用AVG函数和MIN函数,这应该很好理解吧。...,这里需要注意是,如果我们要聚合,前三个可以使用sum或者max方法,最后一个一定要使用sum方法,因为我们要求是总成绩,使用max方法会导致取值变为分数最高那个

12.8K10

数据库基础,看完这篇就够了!

use [数据库名称]); 之间用逗号隔开,内用空格隔开; 创建时,要根据需保存数据创建相应,并根据要存储数据类型定义相应类型。...count(*)、count(1)、count(列名)执行效率比较: MAX:最大 MIN:最小 AVG:平均值 SUM:求和 select max(列名) from 名; select min(...分别列出订单user_id=2最小价格和最大价格 SELECT MIN(price),MAX(price) FROM order_info WHERE user_id = 2; -- 4....分别列出订单user_id=2最小价格和最大价格,并把最小价格展示结果列名改为"min_price" SELECT MIN(price) AS min_price,MAX(price) FROM...分别列出订单user_id=2价格平均值、最小、最大 SELECT AVG(price),MIN(price),MAX(price) FROM order_info WHERE user_id

2.6K31

MySQL(五)汇总和分组数据

) as max_price from products; 这条SQL语句中国返回productsprice最大; PS:MySQL允许max()用来返回任意最大,包括返回文本最大...;但用于文本数据时,如果数据按相应排序,则max()返回最后一行(max()函数忽略为null行) 4、min()函数 min()返回指定最小min()也要求指定列名,例子如下: select...min(prod_price) as min_price from products; 这条SQL语句中min()返回productsprice最小; PS:MySQL允许min()用来返回任意最小...,包括返回文本最小;但用于文本数据时,如果数据按相应排序,则min()返回最前面的行(min()函数忽略为null行) 5、sum()函数 sum()函数用来返回指定和(总计);例子如下...(productsitems数目、price最高、最低以及平均值) PS:在指定别名以包含某个聚集函数结果时,不应该使用实际列名;这样便于使用SQL更加容易和理解,以及排除方便排除错误。

4.7K20

正态分布

这里可以采用分箱、聚类和回归方式进行数据平滑,我会在后面给你讲解聚类和回归这两个算法; 数据聚集:对数据进行汇总,在 SQL 中有一些聚集函数可以供我们操作,比如 Max() 反馈某个字段数值最大...这样“总和”这个属性就可以用到后续数据挖掘计算。 数据进行规范处理三种方法: 1. Min-max 规范化 Min-max 规范化方法是将原始数据变换到 [0,1] 空间中。...小数定标规范化 小数定标规范化就是通过移动小数点位置来进行规范化。小数点移动多少位取决于属性 A 取值最大绝对。...Min-max 规范化 我们可以让原始数据投射到指定空间 [min, max],在 SciKit-Learn 里有个函数 MinMaxScaler 是专门做这个,它允许我们给定一个最大与最小,然后将原数据投射到...[min, max]

1.5K20

Django ORM 多表操作(二)

,Min,Count,Sum(首字母大写) from django.db.models import Avg,Max,Min,Count,Sum # 引入函数 返回: 分组后,用 values...取值,则返回是 QuerySet 数据类型里面为一个个字典; 分组后,用 values_list 取值,则返回是 QuerySet 数据类型里面为一个个元组 注意:MySQL limit 相当于...总结 使用annotate()分组,括号内写聚合函数 values在前面,表示SQLgroup by字段 values在后面,表示取出 字段 filter在前面,表示SQLwhere条件 filter...在后面,表示SQLhaving过滤 单分组查询示例 格式:名.objects.values('group by 字段').annotate(聚合函数('统计字段')) # select count...当model如果没有自增列,则自动会创建一个列名为id。 IntegerField:一个整数类型,范围在 -2147483648 to 2147483647。

1K20

MySQL Slow Sql优化(面向研发)

min:最小 max:最大 avg:平均 95%:把所有从小到大排列,位置位于95%那个数,这个数一般最具有参考价值 stddev:标准偏差,表示所有偏离平均值波动程度 (计算这个是从百分之...Tables:查询涉及到 Explain:SQL语句 四、SQL优化利器—explain使用 explain模拟优化器执行SQL语句,在5.6以及以后版本,除过select,其他比如insert...5)尽量减少多表关联,同一个SQL多关联(join)一个,就会多分配一个关联缓存,如果在一个SQL关联越多,所占用内存也就越大。...,减少间隙锁产生,高发下避免死锁 5)禁止给每一都建立单独索引 6)限制每张索引数量,建议单张索引不超过5个 7)出现在SELECT、UPDATE、DELETE语句WHERE条件...,和包含在ORDER BY、GROUP BY、DISTINCT,通常建立联合索引效果更好 8)区分度最高放在联合索引最左侧(区分度=不同数量/总行数) 9)尽量把字段长度小放在联合索引最左侧

1.8K31

SQL常用函数-聚合函数

本文将主要介绍SQL聚合函数,并给出相应语法和示例。一、聚合函数聚合函数是SQL一类特殊函数,它们用于对某个或行进行计算,并返回一个单一作为结果。...SQL中常用聚合函数包括:COUNT函数COUNT函数用于计算某一中值数量,可以用于任意数据类型,包括NULL。...AVG(score) FROM students WHERE age < 18;MAX函数MAX函数用于计算某一中值最大,可以用于任意数据类型。...其基本语法如下:SELECT MAX(column_name) FROM table_name WHERE condition;例如,从students查找最高分数:SELECT MAX(score...) FROM students;MIN函数MIN函数用于计算某一中值最小,可以用于任意数据类型

1.1K31

事件统计 | performance_schema全方位介绍

: 0 1 row in set (0.00 sec) 从上面示例记录信息,我们可以看到: 每个都有各自一个或多个分组,以确定如何聚合事件信息(所有都有EVENT_NAME与setup_instruments...:按照每个库级别对象和语句事件原始语句文本统计(md5 hash字符串)进行统计,该统计是基于事件原始语句文本进行精炼(原始语句转换为标准化语句),每行数据相关数值字段是具有相同统计统计结果..._*事件记录相应xxx进行统计。...分组基于该语句DIGEST(md5 hash)  * 如果给定语句统计信息行在events_statements_summary_by_digest已经存在,则将该语句统计信息进行更新...如果内存所有权在线程之间传输,则该估算可能为负数 |  温馨提示 性能事件统计数据条目是不能删除,只能把相应统计字段清零; 性能事件统计某个instruments是否执行统计,依赖于在

1.8K31
领券