aw *_*rud 4 sql oracle indexing
我看到了一些创建索引的例子.之后执行以下操作:
exec dbms_stats.gather_table_stats(...)
Run Code Online (Sandbox Code Playgroud)
这是否必须让Oracle关注索引?我认为每天晚上收集统计数据(?)但是有些情况下我创建的索引对随后的解释计划感到失望.也许我错过了一步?
这取决于Oracle的版本.
在9i之前的版本中,您必须在创建索引之后显式收集统计信息,然后基于成本的优化器才有可能使用它.
在9i中,Oracle将COMPUTE STATISTICS子句添加到CREATE INDEX语句中.这使您可以在索引创建过程中收集有关索引的统计信息.如果您未指定COMPUTE STATISTICS,则仍需在CBO可能考虑之前手动收集统计信息.
在10g中,默认行为已更改,Oracle会在您创建索引时自动计算索引的统计信息,而无需指定COMPUTE STATISTICS.出于习惯的原因,或者因为他们只是更新旧的示例代码,人们通常会在他们发布的示例中包含GATHER_INDEX_STATS调用.
在10g及更高版本中,默认情况下会创建一个后台作业,用于收集缺少统计信息的对象和统计信息在夜间过时的对象的统计信息.DCookie对10g工作的解释是现场.Oracle改变了11g工作的设置方式,但它仍然基本上做同样的事情.
| 归档时间: |
|
| 查看次数: |
3157 次 |
| 最近记录: |