数据库
oracle数据库自启动和关闭脚本调用
数据库灾备恢复小结
DMS使用文档
Oracle12C安装文档_李光升
Centos配置yum源的操作步骤-李光升
CCS数据库突然卡顿问题解决-徐铭
Centos 7.9静默安装oracle 12cR2详细步骤
mysql5.7数据库sql语句数据类型隐式转换的反逻辑BUG
RDS MySQL临时文件导致实例磁盘空间满且出现“锁定中”状态
关于Mysql引擎Myisam和InnoDB的使用
MySQL查询语句中in和exists区别详解-知识点
Mysql 的存储过程中 WITH AS 的语法和使用
Mysql 性能调优-详解
oracle数据库DG搭建
SUSE linux 配置时钟同步服务NTP/Chrony
oracle数据库实例开启操作文档
oracle数据库实例关闭操作文档
oracle数据库DBS备份配置文档v2
ALiYun ECS CENTOS数据上传到OSS操作手册
Oracle - LOGMINER配置方法
oracle sysaux表空间爆满清理unified auditing数据
sysaux表空间爆满WRI$_ADV_OBJECTS占用严重
SAP权限对象
SYSAUX表空间WRI$\_ADV\_OBJECTS表过大清理V2
oracle:表访问方式
ORA性能诊断调优
数据字典(DICT)和性能事件类型(EVENT)
日志挖掘LogMiner
RMAN sql_id “0az7czjdw8z7j” 执行计划异常
Oracle11g Active Data Guard搭建、管理
ORACLE LOGMINER配置v2
oracle日志组调整
ECS linux服务器挂载nas磁盘失败
oracle数据库修改字符集
datapump数据泵导入导出
OA系统数据库ADG架构搭建
IPS数据库SQL执行异常:ORA-00600
oracle 12c 创建PDB
oracle数据库监听异常
lvm:阿里云磁盘扩容,lvm扩容
Redis基本操作
SAP S4 CLIENT COPY(800->400)
日常数据库操作
PGSQL操作
# ORA-00054: resource busy问题处理
OA数据库服务器故障分析报告
CCS数据库生产数据库(北京中心)覆盖到VER环境数据库(乌兰察布):使用nonpdb to pdb迁移方式
WINDOWS环境Django框架连接MySQL数据库配置
Django开发学习实战
什么是向量嵌入?
OA数据库服务器内次异常增长问题分析
基于AI的自动化服务器管理
AI技术发展趋势及其在农牧食品行业的创新应用
IPS数据库日志表数据归档&表分区
国产编程模型GLM-4.6海外爆火:性能媲美ClaudeSonnet,性价比优势显著
免费开源的零代码平台 / 无代码平台,敲敲云 v2.2.0 版本
数据库原理与应用
AI发展近况分析
ORACLE ADG环境下解除ADG关系并激活备库为独立数据库
麦肯锡重磅报告:关于未来的生存指南,当57%的工作被自动化,我们如何与AI结成利益共同体
【Oracle】Cursor(游标)
ORACLE数据库在曾经的备库(路径一致)进行不完全恢复
获取执行计划的6种方法
人工智能行业的发展已进入“系统竞争”时代
2026年AI与机器人发展趋势
事务未提交导致行锁等待问题处理
MongoDB日常操作命令
2026年人工智能前沿技术趋势与应用落地分析
Doris开发
本文档使用「觅思文档专业版」发布
-
+
首页
oracle:表访问方式
# oracle:表访问方式 1. TABLE ACCESS BY ...即描述的是该动作执行时表访问的方式(或者说oracle访问数据的方式) 1. TABLE ACCESS FULL(全表扫描): 1. oracle会读取表中所有的行,并检查每一行是否满足SQL语句中的where限制条件; 2. 全表扫描时可以使用多块读(即一次I/O读取多块数据块)操作,提升吞吐量; 3. 使用建议:数据量太大的表不建议使用全表扫描,除非本身需要取出的数据较多,占到表数据总量的5%~10%以上 2. TABLE ACCESS BY ROWID(通过ROWID的表存取): 1. ROWID是由Oracle自动加在表中每行最后的一列伪列,既然是伪列,就说明表中不会物理存储ROWID的值; 2. 你可以像使用其他列一样使用他,只是不能对该列的值进行增、删、改操作; 3. 一旦一行数据插入后,则其对应的ROWID在该行的生命周期内是唯一的,即使发生行迁移,该行的ROWID值也不变。 4. 让我们在回到TABLE ACCESS BY ROWID来:行的ROWID指出了该行所在的数据文件、数据块及行在该块中的位置,所以通过ROWID可以快速定位到目标数据上,这也是Oracle中存取单行数据最快的方法; 3. TABLE ACCESS BY INDEX SCAN(索引扫描): 1. 在索引块中,既存储每个索引的键值,也存储具有该键值的行的ROWID。所以索引扫描其实分为两步: 1. 第一步,扫描索引得到对应的ROWID。 2. 第二步,通过ROWID定位到具体的行读取数据 4. TABLE ACCESS BY INDEX ROWID BATCHID: 1. 当我们通过索引获取的ROWID回表获取相应数据行时,都是读一个rowid回表获取一次相应数据行,然后,再读一个ROWID,再回表获取一次相应数据行...这样一直读取完所有所需数据。当不同rowid对应的数据行存储在一个数据块中时,就可能会发生对同一表数据块的多次读取,当一个索引的聚集因子比较低时,这也是一个必然结果,从而浪费系统资源。 2. Oracle 12c中该新特性,通过对ROWID对应的数据块号进行排序,然后回表读取相应数据行,从而避免了对同一表数据块的多次重复读取,从而改善了SQL语句的性能,降低了资源消耗。 3. 该特性通过隐藏参数"\_optimizer\_batch\_table\_access\_by\_rowid"控制,默认值为TRUE,即为开启。 2. 索引扫描分五种: 1. INDEX UNIQUE SCAN(索引唯一扫描) 1. 针对唯一性索引(UNIQUE INDEX)的扫描,每次至多只返回一条记录; 2. 表中某字段存在UNIQUE、PRIMARY KEY 约束时,Oracle常实现唯一性扫描; 2. INDEX RANGE SCAN(索引范围扫描) 1. 使用一个索引存取多行数据; 2. 发生索引范围扫描的三种情况: 1. 在唯一索引列(unique索引)上使用了范围操作符(如:> < <> >= <= between) 2. 在组合索引上,只使用部分列进行查询(查询时必须包含前导列,否则会走全表扫描) 3. 对非唯一索引列(非unique)上进行的任何查询 3. INDEX FULL SCAN(索引全扫描) 1. 进行索引全扫描时,查询出的数据都必须从索引中可以直接得到 4. INDEX FAST FULL SCAN(索引快速扫描) 1. 扫描索引中的所有的数据块,与INDEX FULL SCAN类似,但是一个显著的区别是他不对查询出的数据进行排序(即数据不是以排序顺序被返回) 5. INDEX SKIP SCAN(索引跳跃扫描) 1. 前提条件:表有一个复合索引,且在查询时除了前导列(索引中第一列)外的其它列作为条件,并且优化器模式为CBO时当oracle发现前导列的唯一值个数很少时,会将每个唯一值都作为常规扫描的入口,在此基础上做一次查找,最后合并这些查询。 3. 分区扫描方式 1. PATITION RANGE ALL:扫描所有分区 2. PATITION RANGE ITERATOR:扫描部分分区 3. PATITION RANGE SINGLE:扫描单个分区
徐铭
2024年3月26日 16:38
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期