Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle-bind_-aware提示在v$sql结果中未显示为“bind_-aware”_Oracle_Query Optimization_Oracle12c - Fatal编程技术网

Oracle-bind_-aware提示在v$sql结果中未显示为“bind_-aware”

Oracle-bind_-aware提示在v$sql结果中未显示为“bind_-aware”,oracle,query-optimization,oracle12c,Oracle,Query Optimization,Oracle12c,在我的办公室里,我们使用了大量的/*+bind\u-aware*/提示,今天早上我决定做一个快速测试,看看它们是否像我预期的那样工作 我从一个常用的表开始,我们称之为person,并对其进行简单的查询,如下所示: SELECT /* foo */ /*+ bind_aware */ * FROM person WHERE person_id = :person; 但运行上述查询后,结果如下: SELECT child_number, executions, buffer_gets,

在我的办公室里,我们使用了大量的
/*+bind\u-aware*/
提示,今天早上我决定做一个快速测试,看看它们是否像我预期的那样工作

我从一个常用的表开始,我们称之为
person
,并对其进行简单的查询,如下所示:

SELECT /* foo */ /*+ bind_aware */ * FROM person WHERE person_id = :person;
但运行上述查询后,结果如下:

SELECT child_number, executions, buffer_gets, 
     is_bind_sensitive, is_bind_aware, is_shareable
     FROM v$sql 
     WHERE sql_text LIKE 'SELECT /* foo%';

CHILD_NUMBER  EXECUTIONS  BUFFER_GETS  IS_BIND_SENSITIVE  IS_BIND_AWARE  IS_SHAREABLE
           0           1           26                  N              N             Y
唉,我希望
是\u BIND\u AWARE=Y

个人id
上有一个混合直方图,如下所示:

SELECT COLUMN_NAME, HISTOGRAM 
  FROM   ALL_TAB_COL_STATISTICS 
  WHERE  TABLE_NAME = 'PERSON'
  AND COLUMN_NAME = 'PERSON_ID';

COLUMN_NAME  HISTOGRAM
  PERSON_ID     HYBRID

PERSON\u ID
列已编制索引并具有唯一标识符,但我仍然希望它具有绑定感知功能。为什么不是这样?

如果这是此表上的唯一标识符,为什么您希望计划会发生变化?也就是说,我不希望它是绑定敏感或绑定感知的。该计划不应根据您在查询中绑定的person_id进行更改。我看到了以下两篇文章,希望至少看到两个游标和强制游标共享。光标是可共享的,但仍然不支持绑定。绑定敏感游标表示它是计划更改的候选对象。Bind-aware是实际应该更改的游标。如果您正在为生活在给定状态(其中state=:state)中的人提取数据,并且数据非常倾斜,那么您可能有一个根据绑定状态而改变的计划。在您的情况下,基于唯一索引(person_id)查找一行将有相同的计划,无论person_id是什么,谢谢,这很有帮助;我没有意识到这种区别。这是否意味着即使没有提示,查询也可以标记为bind-aware?是的,这是正确的