我应该选择哪个索引选项?

时间:2011-10-04 16:27:26

标签: sql indexing database-design

我有一个包含这些列的SQL表(id,A,B,C,D,E)。

我通常在(A和C)和(B和C)上查询,所以我决定在这些上有索引3.有一些选项:

  • 分别为A,B,C的索引
  • 两对(A,C)和(B,C)的索引
  • (A,B,C)指数

我应该选择哪个选项?数据库大小可能是一个问题,但我们假设它现在不是什么大问题。

2 个答案:

答案 0 :(得分:2)

在两对上建立一个索引。对于大多数索引(尽管这可能因类型和数据库而异),如果仅查询A,则使用A,B上的索引,但如果仅查询B,则不使用A,B。因此,请确保第一列中的您的索引是您查询的列。如果查询A,B和A,C,而不是单独查询B或C,则只需要这两对上的索引。

答案 1 :(得分:1)

如果存储/空间利用率很重要,那么在A和B上添加两个单列索引。

如果这些查询的性能更为关键,则添加两个复合索引,一个在(A,C)上,另一个在(B,C)上。

如某人已经评论过,这些建议都是有根据的猜测。尝试使用各种选项来找到最佳索引策略是一个好主意。