update insert 等有执行计划缓存吗? 请教各位大侠select有查询计划1. 那update insert delete有执行计划吗?2. 有的话这些执行计划也会进行缓存吗?3. 那是不是也要避免硬编码,以免影响效率啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请教各位大侠select有查询计划1. 那update insert delete有执行计划吗?如果这些语句涉及到子查询,那他们是存在有执行计划的。。2. 有的话这些执行计划也会进行缓存吗?数据的操作肯定不会是直接些数据文件的,最后由dbwr进程负责从缓存中存入到数据库。该进程执行将缓冲区写入数据文件,是负责缓冲存储区管理的一个ORACLE后台进程。当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,DBWR的主要任务是将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。由于缓冲存储区的缓冲区填入数据库或被用户进程弄脏,未用的缓冲区的数目减少。当未用的缓冲区下降到很少,以致用户进程要从磁盘读入块到内存存储区时无法找到未用的缓冲区时,DBWR将管理缓冲存储区,使用户进程总可得到未用的缓冲区。 3. 那是不是也要避免硬编码,以免影响效率啊?硬编码应该会减慢查询的速度,因为硬编码使得每次数据库都必须对sql进行解析,不过可以开启cursor_share参数,来使用游标共享。我们在编写的程序的时候要避免硬编码,而是使用绑定变量。较少sql解析 这个没有操作过,你测试一把呀把insert语句放到plsql里,按下f5试下我觉得应该没有比如有些基于数据块的数据复制insert /*+append*/ into .... 除了 DDL 语句外,对于 DML 语句 ORACLE 都会缓存执行计划。但是相比存储过程,DML 语句的执行计划的缓存时间较短。 --------会公司测试了一把,都有执行计划的SQL> explain plan for insert into tt values('11');ExplainedSQL> select * from table(dbms_xplan.display);PLAN_TABLE_OUTPUT----------------------------------------------------------------------------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time--------------------------------------------------------------------------------| 0 | INSERT STATEMENT | | 1 | 100 | 1 (0)| 00:00:01| 1 | LOAD TABLE CONVENTIONAL | TT | | | |--------------------------------------------------------------------------------7 rows selectedSQL> 透明网关的奇怪问题 怎么将.csv文件里的数据通过存储过程导入数据库 ORACLE 改表名索引是否失效? 数据库中创建视图有什么用啊? 俺原来在win2k server中装过Oracle9i,后来卸掉了,但, 用Oracle游标取数据有没有条数限制的? form builder的下载地址? 请教:Oracle服务突然意外中止! 宝贝女儿出生!!(散分) 如何在oracle8i中实现A、B两表的多字段关联对A表删除某些字段内容重复的记录?? 游标重复返回 为什么我用system 测试Net服务配置一直都无法成功
如果这些语句涉及到子查询,那他们是存在有执行计划的。。2. 有的话这些执行计划也会进行缓存吗?
数据的操作肯定不会是直接些数据文件的,最后由dbwr进程负责从缓存中存入到数据库。
该进程执行将缓冲区写入数据文件,是负责缓冲存储区管理的一个ORACLE后台进程。当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,DBWR的主要任务是将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。由于缓冲存储区的缓冲区填入数据库或被用户进程弄脏,未用的缓冲区的数目减少。当未用的缓冲区下降到很少,以致用户进程要从磁盘读入块到内存存储区时无法找到未用的缓冲区时,DBWR将管理缓冲存储区,使用户进程总可得到未用的缓冲区。
3. 那是不是也要避免硬编码,以免影响效率啊?
硬编码应该会减慢查询的速度,因为硬编码使得每次数据库都必须对sql进行解析,不过可以开启cursor_share参数,来使用游标共享。我们在编写的程序的时候要避免硬编码,而是使用绑定变量。较少sql解析
比如有些基于数据块的数据复制insert /*+append*/ into ....
--------会公司测试了一把,都有执行计划的
SQL> explain plan for insert into tt values('11');ExplainedSQL> select * from table(dbms_xplan.display);PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
--------------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 1 | 100 | 1 (0)| 00:00:01
| 1 | LOAD TABLE CONVENTIONAL | TT | | | |
--------------------------------------------------------------------------------7 rows selectedSQL>