Oracle绑定变量类型和长度引起的执行计划变化
在Oracle数据库中执行SQL语句,当客户端发出一条语句交付到ORACLE,会进行以下几个步骤: 1、语法检查(syntax check) 其中,软、硬解析就发生在第三个过程里。 如果使用了绑定变量,且绑定变量类型一直未变话,则通常只在第一次运行的时候进行一次硬解析(优化器创建解析树、生成执行计划),后续都是软解析(将此SQL和cache中的进行比较,如果相同,取已生成的执行计划),创建解析树、生成执行计划对于sql的执行来说是开销昂贵的动作,所以,应当极力避免硬解析,尽量使用软解析。 本范例想说明:即便语句完全相同,但是如果绑定变量的类型发生了变化的话,也会发生硬解析. ? --建立测试表 create table TESTBIND ( aaa CHAR(10),bbb CHAR(100),ccc CHAR(2000) ) --清理缓存 ALTER SYSTEM FLUSH SHARED_POOL; alter system flush BUFFER_CACHE;建立测试表并清空缓存 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |