plan_hash_value判断sql的访问路径是否改变的主要方法是:v$sql.plan_hash_value的值是否改变。如果不同的sql语句含有相同的实验:---创建表deptSQL> create table dept as select * from scott.dept;Table created.---执行2条sql查询dept表SQL> select deptno,dname from dept where deptno=10;DEPTNO DNAME--- ...
---通过v$sql查询关于dept的sql的address,hash_value,child_number,plan_hash_value,sql_text col SQL_TEXT for a100 select address,hash_value,child_number,plan_hash_value,sql_text from v$sql where sql_text like '%DEPT%'; ADDRESS HASH_VALUE CHILD_NUMBER PLAN_HASH_VALUE SQL_TEXT --- --- --...
列ADDRESS,HASH_VALUE和CHILD_NUMBER被用于连接V$SQL或V$SQLAREA来获取cursor-specific信息,例如,BUFFER_GET,或连接V$SQLTEXT获取完整的SQL语句。 Column View Joined Column(s) ADDRESS, HASH_VALUE V$SQLAREA ADDRESS, HASH_VALUE ADDRESS,HASH_VALUE,CHILD_NUMBER V$SQL ADDRESS,HASH_VALUE,CHILD_NUMBER ADDRESS, HAS...
v$sqlarea每条语句都有一个唯一的HASH_VALUE,相当于你语句的一个ID,v$sql、v$sql_plan的hash_value,如果两条相同的话ORACLE会认为这两条语句是同一条语句,不在再次做硬解析,plan_hash_value是计划的hash值,数值的大小没啥意义。
这两个hash_value 是数据库内部使用的一个hash值 hash_value 具体可对应到 v$sql 的hash_value plan_hash_value 则对应到执行计划相关表的hash值
PLAN_HASH_VALUE --- ... fzgydxr7yjcxd select dummy zero from dual where dummy> :x 0
今天发现一个PLAN_HASH_VALUE=0的SQL,查了下PLAN_HASH_VALUE为0原因,记录一下 根据 文档 ID 1587381.1,这是正常现象,主要发生在以下语句: 不带查询的INSERT/DELETE语句,这种SQL不需要访问路径,没有执行计划 使用绑定变量的select语句,已进行解析但还没有实际执行,执行计划会延迟到执行时生成。
总结步骤如下: 执行: EXPLAIN PLAN FOR SELECT * from * where... 再执行: select * from table(dbms_xplan.display) 方法二: 这种方式更简单,把SQL框起来点按钮就行了。 附:Oracle Explain Plan中各种信息的含义: Plan hash value是该语句的哈希值。SQL 语句和执行计划会存储在库缓存中,哈希值相同的语句...
计划乃价值所在 价值由计划而成
V$SQLAREA_PLAN_HASHは、SQL_ID列およびPLAN_HASH_VALUE列でグループ化して、共有SQL領域(V$SQL)に関する統計情報を示します。PLAN_HASH_VALUE列の異なる値ごとに1行ずつ作成するというように、1つの親カーソルに複数の行を作成することもできます。 列...