我目前正致力于在索引结构方面优化我的数据库架构。由于我希望提高我的DDL性能,我正在寻找Oracle 12c系统上潜在的丢弃候选者。在这种情况下,如果我删除索引,我不知道查询性能的后果可能是什么。
在同一个表上给出两个索引: - 非唯一的单列索引IX_A(索引列A) - 唯一的组合索引UQ_AB(索引列A,然后是B)
使用索引监视我发现查询优化器没有选择UQ_AB,而只选择IX_A(可能因为它更小,因此读取速度更快)。由于UQ_AB包含A列,另外B列我想丢弃IX_A。虽然如果我这样做,我不确定是否会受到任何性能损失。组合唯一索引的较高选择性是否会对执行计划产生任何影响?
答案 0 :(得分:0)
它可以做到,虽然它很可能是次要的(通常)。当然,这取决于各种因素,例如B列中的值有多大。
您可以查看USER_INDEXES中的各个列来比较两个索引,例如:
(您需要首先分析表格才能准确)。这将使您了解Oracle需要使用索引查找行的工作量。
当然,唯一可以确定的方法是对时间进行基准测试和比较,甚至跟踪输出。