假设我有一个唯一的密钥(1,2,3)。这会自动为该组合键创建一个唯一索引(我知道)。但如果我在第2列搜索,那么索引会发挥作用吗?或者我是否还需要定义一个超过2的索引?
答案 0 :(得分:3)
有可能(取决于版本)Oracle可以在1,2,3
的查询中使用column2
上的索引。但是,这需要Oracle进行索引跳过扫描。这通常不是特别有效的访问路径。但是,它的低效率取决于表中不同column1
值的数量 - 这些不同的值越多,索引跳过扫描的效率就越低,Oracle选择该值的可能性就越小。路径。
通常,如果查询在一个或多个前导列中包含谓词,您可能只希望Oracle使用索引。例如,如果您的索引是在2,1,3
上定义的,那么您的查询将更有可能从使用索引中受益。当然,这意味着只有column1
上的谓词的查询会有相同的问题,即不使用索引或执行索引跳过扫描,具体取决于不同column2
值的数量。