Oracle Unusable Index会降低性能吗?

我看到无法使用的索引使查询性能降低了4个小时以上...

通常,不可用的索引会减慢查询速度吗?在什么情况下它将改善性能。

谢谢。

jnx000 回答:Oracle Unusable Index会降低性能吗?

在创建索引或索引的某些分区或子分区UNUSABLE时,不会为不可用的对象分配任何段。无法使用的索引或索引分区不占用数据库空间。

有关更多文档,请参见以下链接:

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/CREATE-INDEX.html#GUID-1F89BBC0-825F-4215-AF71-7588E31D8BFE

您可以检查query optimizer计划或query execution计划以检查查询的性能。

在表上具有许多索引会降低DML性能,因为数据库还必须更新索引。索引可以是可用的(默认)或不可用的。 DML操作不会维护不可用的索引,优化器会忽略它。无法使用的索引可以改善大容量负载的性能。

我可以看到您可以尝试以下两种情况:

  1)  Deleting from large table without having index

Drop indexes-在批量删除之前删除索引并在之后重新构建索引可以提高删除性能,因为每个单独的删除都必须将自己从索引中删除,从而导致速度变慢。 Oracle删除索引条目而无需重新平衡索引树(“逻辑删除”),但这仍然很耗时,尤其是在目标表上有很多索引的情况下

   2) Parallel Delete

您还可以使用并行dml检查删除查询的性能:

ALTER SESSION ENABLE PARALLEL DML;
DELETE /*+ parallel(table,20) */
  FROM  table

然后您可以从以上两种情况中确定哪种方法对删除查询的运行速度更快

本文链接:https://www.f2er.com/3166177.html

大家都在问