数据库
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开发
人工智能在数据库运维工作中的应用趋势与落地场景研究
帆软报表开发学习
AI 助手在 Oracle DBA 工作中的辅助能力研究报告
AI原生数据库发展趋势白皮书
OpenClaw数据库管理应用实践
Apache Doris 简介
AI在实际工作中的应用案例分享
人形机器人现状
从十大AI技术趋势,窥见“未来”
AI 在辅助投资股票方面的落地方案与实际使用价值
从原理到实践,一文读懂主流 AI 技术
AI Agent 从零开始学习路线图
AI 驱动的内容生产工作流探索 —— 基于微信公众号文章编写与视频号视频生成的实践
本文档使用「觅思文档专业版」发布
-
+
首页
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文档(打印)
分享
链接
类型
密码
更新密码
有效期