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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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:是否可以用唯一的组合索引替换标准的非唯一单列索引?_Oracle_Performance_Indexing - Fatal编程技术网

Oracle:是否可以用唯一的组合索引替换标准的非唯一单列索引?

Oracle:是否可以用唯一的组合索引替换标准的非唯一单列索引?,oracle,performance,indexing,Oracle,Performance,Indexing,我目前正致力于在索引结构方面优化我的数据库模式。因为我想提高DDL性能,所以我正在我的Oracle 12c系统上寻找潜在的drop候选者。在这种情况下,如果我删除索引,我不知道会对查询性能造成什么后果 给定同一表上的两个索引: -非唯一的单列索引IX_A索引A列 -唯一的组合索引UQ_AB索引A列,然后索引B列 使用索引监视,我发现查询优化器没有选择UQ_AB,而只选择IX_A,可能是因为它更小,因此读取速度更快。由于UQ_AB包含A列和B列,我想删除IX_A。尽管我不确定如果我这样做是否会受到

我目前正致力于在索引结构方面优化我的数据库模式。因为我想提高DDL性能,所以我正在我的Oracle 12c系统上寻找潜在的drop候选者。在这种情况下,如果我删除索引,我不知道会对查询性能造成什么后果

给定同一表上的两个索引: -非唯一的单列索引IX_A索引A列 -唯一的组合索引UQ_AB索引A列,然后索引B列


使用索引监视,我发现查询优化器没有选择UQ_AB,而只选择IX_A,可能是因为它更小,因此读取速度更快。由于UQ_AB包含A列和B列,我想删除IX_A。尽管我不确定如果我这样做是否会受到任何性能惩罚。组合唯一索引的较高选择性是否对执行计划有任何影响

可以,不过通常情况下很可能是次要的。当然,这取决于各种因素,例如B列中的值有多大

您可以查看USER_索引中的各个列来比较这两个索引,例如:

BLEVEL:告诉你索引树的高度,高度是BLEVEL+1 LEAF_BLOCKS:索引值占用了多少数据块 不同的_键:索引的选择性如何 您需要先分析表格,以确保这些数据准确无误。这将让您了解Oracle需要做多少工作才能使用索引查找一行


当然,唯一真正确定的方法是基准测试和比较计时,甚至跟踪输出。

感谢您的回答,我将检查用户索引,尤其是索引高度应该有助于决定是否删除索引或保留索引。尽管如此,我还是会尝试一下,删除索引,看看我的基准测试的表现如何。我只是不确定Oracle在执行计划计算中使用唯一组合索引的方式是否存在系统性差异。