在几个列上使用唯一键会加速查询只有一个索引列吗?

时间:2014-05-08 15:40:38

标签: sql oracle database-design

假设我有一个唯一的密钥(1,2,3)。这会自动为该组合键创建一个唯一索引(我知道)。但如果我在第2列搜索,那么索引会发挥作用吗?或者我是否还需要定义一个超过2的索引?

1 个答案:

答案 0 :(得分:3)

有可能(取决于版本)Oracle可以在1,2,3的查询中使用column2上的索引。但是,这需要Oracle进行索引跳过扫描。这通常不是特别有效的访问路径。但是,它的低效率取决于表中不同column1值的数量 - 这些不同的值越多,索引跳过扫描的效率就越低,Oracle选择该值的可能性就越小。路径。

通常,如果查询在一个或多个前导列中包含谓词,您可能只希望Oracle使用索引。例如,如果您的索引是在2,1,3上定义的,那么您的查询将更有可能从使用索引中受益。当然,这意味着只有column1上的谓词的查询会有相同的问题,即不使用索引或执行索引跳过扫描,具体取决于不同column2值的数量。