暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

数据访问

原创 yBmZlQzJ 2022-12-20
481

HASH

HASH JOIN

概念说明:散列连接是CBO常用的连接方式,优化器用两个表(通常是小表)利用连接键在内存中建立散列表,存储到散列表后,扫描较大的表,同样对JOIN KEY进行HASH后探测散列表,找出与散列表匹配的行。

注:如果表太多,不能一次性写到内存中,就分成分区,写入磁盘缓存段。所以只适合小表。

hint方式:/*+ USE_HASH(table_name1 table_name2)*/

使用场景:Hash join在两个表的数据量差别很大的时候。

参考文档:链接

INDEX

INDEX FULL SCAN

当索引查询包含需要所有访问的数据时,会进行全索引扫描,默认升序。如果索引块没在缓冲区缓存,他会从使用单块从数据文件中读取。要改善这个性能使用索引快速全扫描。

使用方法:/*+ index(t t_n1) *//*+ index_desc(t t_n1) */

INDEX FAST FULL SCAN

使用多块读从数据文件从读取索引块,取回的数据没有索引键存储。

INDEX FULL SCAN比INDEX FAST FULL SCAN在磁盘I/O操作低效,前者只在排序时用到

使用方法:/*+ index_ffs(t t_n1) */

PARTITION

RANGE

Iran且连续的值,例如时间戳和序列生成的数字

PARTITION RANGE SINGLE

只访问了一个分区

PARTITI3ON RANGE ITERATOR

访问多个分区

PARTITION RANGE INLIST

基于一个或多个元素组成的IN 条件

PARTITION RANGE ALL

没有限制,所有分区都必须被访问

PARTITION RANGE EMPTY

查找的数据没有分区保存

PARTITION RANGE OR

分隔谓词在WHERE子句使用了or条件组合的谓词

PARTITION RANGE SUBQUERY

子查询裁剪,通过递归查找出第二个自操作应该访问哪个分区。

SQL引擎执行递归查询通过第一个自操作访问表来取回连接条件与第二个子操作分区键的列,,,后面还有不记录了,太虚了

PARTITION RANGE JOIN-FILTER

11.1开始提供了“联接过滤裁剪”

PARTITION RANGE MULTI-COLUMN

分区键有多个列组合而成

PARTITION RANGE AND

AND裁剪,为连接条件创建的布隆过滤器

LIST

常见且不连续的值,例如enabled、disabled,年龄,性别

HASH

适合不同的值超出分区数很多的所有数据类型# TABLE ACCESS FULL

概念

在执行计划中Operation列的“FULL TABLE SCAN”便是全表扫描。执行全表扫描时,服务器进程连续读取高水平线(high water mark)以下所有块。当一个表不断数据插入时高水平线不断提高,全表扫描中selete是以高水平线为终点。而当表中含有大量过空或者接近空的快时就会导致次优的性能。场景:删除多余插入时。需要执行行迁移。

数据访问有两种,1.扫描整张表。2.额外的访问结构(比如索引)、表本身(散列)

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论