2019-2020第二学期Oracle优化第3次课

https://www.bilibili.com/video/BV1mE411G7d1?p=1

1.0 发现不良sql

2.0 查看执行计划

 select *  from table(dbms_xplan.display_cursor('sql_id',null));
https://www.cnblogs.com/gull/p/5547905.html

3.0 b站hugecai 的sql 优化视频 笔记

https://www.bilibili.com/video/BV1J5411P7H5
在这里插入图片描述

在这里插入图片描述

2.0 统计信息


#统计信息对于sql 语句的优化很重要
#错误的统计信息将导致优化器错误的选择
#查询出现效率问题时, 有可能不是语句的问题,而是统计信息的问题
#oracle 数据库于每天2200--200自动 更新所有统计信息
#使用一下语句可以手工更新统计信息
execute dbms_stats.gather_table_stats($user_name, $table_name);
其中$user_name 和 $table_name 要用表的归属用户名和表名替代

在这里插入图片描述

3.0 返回查询结果的过程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

#返回查询语句的执行结果可能经过一个或多个提取调用,每次返回满足查询结果的一部分数据行
#除了获取数据(fetch)以外, 解析(parse)、绑定(bind)、执行(execute)只执行一次
#可能需要fetch 多次才能返回满足条件的数据
# 一次fetch 将返回缓冲区缓存中的一个或多个数据块,将其中一些数据行(行数量由Arraysize决定),返回
客户端
# sql*plus 中Arraysize 默认大小为15,可以使用set Arraysize n 命令改变
# JDBC 中Arraysize 默认大小为10,可以使用((OracleConnection)conn).setDefaultRowPrefetch(n)改变
#较大的Arraysize 可以减少FETCH 调用次数

4.0 sql语句的执行过程

在这里插入图片描述

4.0 访问和联结的方法

4.1 数据访问方法

在这里插入图片描述

# 硬解析,由优化器决定访问数据的方式
 -全扫描:全表扫描、快速全索引扫描
 -表的统计信息决定成本估计值

4.3 全扫描

# 所有数据块都被读入内存,取出块中数据行进行检索
# 全扫描需要考虑:
 --数据块的数量
 -- 多少数据被舍弃

在这里插入图片描述

4.4 全表扫描选择规则

# 当查询需要返回表中较多数据行时,倾向于全表扫描
# 上一条规则不总是对的
# 即使返回数据行百分比很小,也有可能全表扫描
# 即使返回数据百分比很高,也有可能不选择全表扫描
# 全表扫描选择的几个要素:
  -- 访问的数据块个数
  -- 最终结果集行数
  --舍弃的行数

在这里插入图片描述

在这里插入图片描述

4.5 全表扫描和索引扫描案例

在这里插入图片描述
在这里插入图片描述
其中 exec dbms_stats.gather_table 的 是执行统计计划

在这里插入图片描述

4.6 查看执行计划

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.7 案例分析

在这里插入图片描述

4.8 全扫描与舍弃

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.9 高水位线

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

块 block 的最大值和最小值
在这里插入图片描述

4.10 删除某个表的所有数据之后,还是有高水位线案例

匿名块
在这里插入图片描述
在这里插入图片描述

用delete 删除所有数据

在这里插入图片描述

查看这张表占用的 块
在这里插入图片描述

查看统计信息

在这里插入图片描述

用truncate 删除表 重置 HWM
(有分区加分区)
在这里插入图片描述

重新查看执行计划

图中 00:00:33 应该是 00:00:00
在这里插入图片描述
结论

在这里插入图片描述

5.0 索引检索

在这里插入图片描述
在这里插入图片描述

5.1 案例分析

在这里插入图片描述

5.2 索引结构

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.3 索引扫描类型

前两个为常用
在这里插入图片描述

在这里插入图片描述

5.4 聚簇因子

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.4 计算索引的聚簇因子

在这里插入图片描述

5.5 案例: 家孙索引的聚簇因子

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6.0 索引唯一扫描

在这里插入图片描述

6.1 案例: 索引唯一扫描

在这里插入图片描述

在这里插入图片描述

7.0 索引范围扫描

在这里插入图片描述

7.1 案例: 索引范围扫描

在这里插入图片描述

在这里插入图片描述

7.2 案例分析

在这里插入图片描述

7.3 不会使用索引范围扫描的情况

在这里插入图片描述

7.4 索引范围扫描的特殊使用

在这里插入图片描述

在这里插入图片描述

8.0 索引全扫描

在这里插入图片描述

8.1 案例: 索引全扫描

8.1.1 案例一

在这里插入图片描述

8.1.2 案例二

在这里插入图片描述

8.1.3 案例三

在这里插入图片描述

8.1.4 案例四

在这里插入图片描述

在这里插入图片描述

9.0 索引跳跃扫描

在这里插入图片描述

9.1 案例

在这里插入图片描述

在这里插入图片描述

10.0 索引快速全扫描

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值