DB中多个列的索引

时间:2014-05-18 18:31:55

标签: oracle11g indexing

我是idexes和DB优化的新手。我知道有一个简单的索引

CREATE index ON table(col)

可能会创建B-Tree并改进搜索功能。

但是2列索引会发生什么?为什么定义的顺序很重要?

CREATE index ON table(col1, col2)

1 个答案:

答案 0 :(得分:1)

是的,如果您未指定其他类型的索引,则将在大多数数据库中创建B-Tree索引。当复合列的组合选择性出现在查询上时,复合索引很有用。

复合索引上列的顺序非常重要,因为通过为索引中包含的所有字段提供精确值进行搜索会导致搜索时间最短,但如果我们提供值,则搜索仅使用第一个字段来检索所有匹配的recaords部分与第一场。

我找到了以下示例供您理解:

在电话簿示例中,在列(city,last_name,first_name)上创建了复合索引,如果我们通过为所有三个字段提供准确值进行搜索,则搜索时间最短 - 但是如果我们提供城市的值仅限first_name,搜索仅使用城市字段来检索所有匹配的记录。然后,顺序查找将检查与first_name的匹配。因此,为了提高性能,必须确保索引是按搜索列的顺序创建的。