下面的sql执行了两次,发现两次的执行计划有不一致的地方。recursive calls(递归调用)第一次是284,第二次是0。consistent gets(一致性读),第一次是88,第二次是2。为什么?问了下c哥,第一次执行sql的时候,需要硬解析sql代码。第二次执行的时候share pool area已经存在执行计划,直接拿来用即可。这些知识在书里都看过,但还是需要实际操作才印象深刻啊。以后审核sql脚本的执行计划,需要执行2次。第一次是硬解析,第二次才真正是在share pool area共享池的消耗。
SQL> set autotrace traceonly
SQL> set timing on
SQL> select * from openapi_company_info where companyid=1;
已用时间: 00: 00: 00.01
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=ALL_ROWS (Cost=1 Card=1 Bytes=374)
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'OPENAPI_COMPANY_INFO' (TABLE) (Cost=1 Card=1 Bytes=374)
2 1 INDEX (UNIQUE SCAN) OF 'OPENAPI_COMPANY_INFO_PK' (INDEX(UNIQUE)) (Cost=0 Card=1)
Statistics
----------------------------------------------------------
284 recursive calls
0 db block gets
88 consistent gets
0 physical reads
0 redo size
2378 bytes sent via SQL*Net to client
496 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
5 sorts (memory)
0 sorts (disk)
1 rows processed
SQL> select * from openapi_company_info where companyid=1;
已用时间: 00: 00: 00.01
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=ALL_ROWS (Cost=1 Card=1 Bytes=374)
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'OPENAPI_COMPANY_INFO' (TABLE) (Cost=1 Card=1 Bytes=374)
2 1 INDEX (UNIQUE SCAN) OF 'OPENAPI_COMPANY_INFO_PK' (INDEX(UNIQUE)) (Cost=0 Card=1)
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
2 consistent gets
0 physical reads
0 redo size
2378 bytes sent via SQL*Net to client
496 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
分享到:
相关推荐
#### 二、Oracle执行计划基础概念 ##### 2.1 Rowid Rowid是一个特殊的伪列,由系统自动生成而非用户定义。每个表都具有一个Rowid列,但它不在物理表中存储。尽管如此,用户仍然可以像操作其他普通列一样使用Rowid...
CATIA/CAA二次开发中的批处理模式是指在不需要打开CATIA界面交互的情况下执行某些任务的模式。这一种模式可以将文件读入session对话中,在对话中将文件打开,然后对文件进行一系列的操作。在这种模式下,可以将程序...
由于物料需求计划是把主生产计划排产的产品分解为各个零部件的生产计划和采购件的采购计划,因此,制订物料需求计划前就必须具备以下的基本数据:第一项数据是主生产计划,它指明在某一计划时间段内应生产出的各种...
### JMeter 使用 CSV Data Set Config 实现不重复数据的多次循环执行 #### 一、背景与目标 在软件测试过程中,经常会遇到需要模拟大量不同用户的场景。例如,一个抽奖活动可能需要模拟数百甚至数千个不同的用户...
这个远跳转指令是要更新CS寄存器和它的shadow register的,也就是说执行这条jmp F000:E05B之後(也就是CPU执行第一条指令之后),CS将被更新成F000,其实CS原来就是这个值,这里说不上是更新,但CS的shadow register...
它可以运行自己的操作系统和应用程序,就像一台真实的计算机一样。虚拟机技术使得在一台物理计算机上同时运行多个操作系统成为可能,这对于测试、开发和教学等方面都非常有用。 **标准答案:** B. 操作系统 ### 10...
本文所提到的二次开发方法就是探讨如何利用Python语言,结合这些工具包和第三方库,来简化Creo的二次开发过程。 5. Python二次开发Creo的方法 文章提出了具体的二次开发思路和关键技术,这些方法通常包括使用第三方...
【第二次实验记录1】主要涉及的是FAT12文件系统的理解和应用,以及使用C/C++和nasm汇编语言编写程序来操作FAT12镜像文件。实验目标旨在深化对FAT12文件系统的理解,熟悉gcc+nasm联合编译,并了解实模式与保护模式的...
如果第二次点击仍然使用相同的代码,由于元素已经在-300像素的位置,再次执行相同的动画效果不会再有视觉上的移动变化,因为移动的目标值和当前值相同,所以看起来像是没有反应。 为了解决这个问题,应该使用“-=”...
### 中北大学软件学院操作系统学习报告 第二次 存储器管理功能 #### 一、引言 内存管理作为计算机系统中的核心组成部分,扮演着至关重要的角色。它不仅影响着计算机的性能表现,还直接关系到系统的稳定性和安全性...
为了避免这种情况发生,`fork()` 设计使得子进程从 `fork()` 后的第一条指令开始执行。 #### 五、fork的用途 1. **多线程实现**:虽然 `fork()` 本身并不直接提供多线程功能,但它可以用于创建多个子进程,每个子...
《Oracle带你感受不一样的备份恢复理论》一文由高阳撰写,深入探讨了Oracle数据库备份与恢复的高级理论,尤其聚焦于RMAN(Recovery Manager)工具的深度理解和应用。文章摒弃了传统的“死记硬背”式学习方法,主张...
顺序查找法每一次比较,只将查找范围减少1,而二分法查找,每比较一次,可将查找范围减少为原来的一半,效率大大提高。 对于长度为n的有序线性表,在最坏情况下,二分法查找只需比较log2n次, 二级公共...
库支持批量执行,这意味着在一次API调用中可以并行执行多个FFT变换,从而提高数据处理的效率。另外,库的线程安全性允许从多个线程安全地调用API,这对于多线程编程模型十分有用。 在编程实践时,需要遵循文档中的...
- 接口定义了一组规范,不能包含具体实现,选项A和B正确。 - 接口中所有方法默认为`abstract`且`public`,因此选项C错误。 - 接口中的方法不能指定具体实现,选项D错误。 8. 抽象类与接口: - C#中,一个类可以...
第二方面是通过一系列的结对帮扶活动,深入关注留守儿童的学习、生活和心理状况,力求促进他们的全面发展和心理健康。 为了达成这些目标,计划中提出了以下几项主要措施。首先,成立由校领导和教师组成的关爱留守...
假设我们有两个旋转矩阵R1和R2,分别代表第一次和第二次旋转。根据线性代数的知识,旋转矩阵是正交矩阵,其乘积仍保持正交性,即R1R2和R2R1都是旋转矩阵,并且它们对坐标的影响是相同的。这意味着无论我们先应用哪个...
但根据【标签】和【部分内容】,我们可以看出这是一个历史试题,包含多项选择题和非选择题,涉及中国古代政治制度、历史事件、思想文化等多个方面。 由于题目要求的是IT行业的专业知识,我们可以尝试将历史知识与IT...
**批处理操作系统**是一种将一系列预先准备好的作业打包在一起,一次性提交给操作系统进行处理的操作系统类型。 - **作业批处理**: 用户可以将一系列命令和数据预先准备好,并作为作业提交给操作系统。操作系统则会...
和构造函数一样,析构函数也没有返回类型。 4. **类的数据成员(Class Data Members)**: 在类中定义的数据成员,例如`int a`,属于类的实例成员。当定义类的两个对象如`A a1, a2`时,它们的数据成员`a`是独立的...