索引无法扫描后,使其无法使用



对于现有的表,我添加了索引来检查性能。表有150万条记录。现有的费用是"58645"。创建索引后,成本降低到"365"。所以我经常把索引设置为"不可用"。然后我修改和重建索引来检查。昨天已知该索引正在oracle的explain plan中使用。但是今天当我无法使用索引并重建时,在解释计划中索引扫描不工作。但性能仍然比老款快。我已经放弃并重新创造。但是这个问题仍然存在。抓取速度很快。但是解释计划显示索引没有被使用,成本显示为"58645"。

很多时候,当您创建新索引或从头构建它时,它不会显示在解释计划中,有时也会有一段时间不使用。为了纠正解释计划,应该收集索引上的统计信息。

EXEC DBMS_STATS。应该使用GATHER_INDEX_STATS或使用DBMS_STATS。带有级联选项的GATHER_TABLE_STATS。

数据块缓存在BUFFER_POOL中,这会影响您的结果,如下:

  1. 运行查询;
  2. 变化指数;
  3. 运行查询;1的缓冲数据会影响性能
  4. 刷新缓冲池
  5. 运行查询-现在你得到了查询有多"快"的一个更真实的测量。

是否刷新了缓冲区?

ALTER SYSTEM FLUSH BUFFER_POOL;

最新更新