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.额外的访问结构(比如索引)、表本身(散列)




