0

假设我在 col1、col2、col3 上创建了一个复合主键,是否会在每个列上创建索引?

我知道主键约束将为 (col1, col2, col3) 的组合创建索引,以便对这 3 列的搜索更快。但我不确定数据库是否会在每个列上创建索引,以便对单个列的搜索(如在 column2 上的搜索)加快速度。

谁能告诉我这些列在索引方面会发生什么?

4

1 回答 1

0

这取决于。通常将创建一个索引,因此只有使用“最左边”列的查询才能使用它,即在您的示例中“SELECT * from T where COL2='x'”将不使用该索引。也就是说,Oracle 可以使用索引“跳过”,其中第一列被压缩,并且计划可以跳过它查看下一列。

您最好的方法是查看手册并在您选择的 DBMS 中尝试,然后查看查询计划。

总结:视情况而定。

于 2013-11-08T03:36:57.193 回答