作业帮 > 综合 > 作业

oracle 中 hash_value 和 PLAN_HASH_VALUE是干嘛用的 数据大小由什么决定

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 04:27:32
oracle 中 hash_value 和 PLAN_HASH_VALUE是干嘛用的 数据大小由什么决定
我有两个sql 分别是
sql1:select * from ssm_check_defect s where s.inner_out_check_id '8a9284a53e8c3cab013e9bd1dcdb0018' and s.defect_code like 'O%'
SQL2:select * from ssm_check_defect s where s.defect_code like 'O%' and s.inner_out_check_id '8a9284a53e8c3cab013e9bd1dcdb0018'
用select s.HASH_VALUE,s.SQL_TEXT,s.PLAN_HASH_VALUE,s.ADDRESS from v$sqlarea s where sql_text like 'select *%ssm_check_defect%inner_out_check_id%' and module ='PL/SQL Developer'
查找他们的hash_value 他们和plan_hash_value 相差很大
这个 sql
hash_value相差很大:
提问:hash_value 是什么?数据越多hash_value 就越大?
这两个hash_value 是数据库内部使用的一个hash值
hash_value 具体可对应到 v$sql 的hash_value
plan_hash_value 则对应到执行计划相关表的hash值
再问: 那么hash_value 越大证明什么??他的大小是根据什么来定义的
再答: hash_value没有具体的意义,大小更没有具体的意义。 你可以把他看成是一个唯一的序列号。 当然,有的开发语言中的hash值是通过机器物理地址+时间+序列来实现的,所以如果越大,当然说明值生成的越晚,至于这几个系统视图中的hash值的生成规则就不知道oracle是用什么方式来实现的了。