2011-10-04 156 views
1

我有一个SQL表与这些列(id,A,B,C,D,E)。我应该选择哪种索引选项?

我通常在(A和C)和(B和C)查询,所以我决定让指数这3个有一些这方面的选择:

  • 指数为A,B,C分开
  • 指数两对(A,C)和(B,C)
  • 指数(A,B,C)

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

+0

你正在使用什么数据库? –

+0

你得到的答案几乎是一个有教养的猜测。你的实验和测量要好得多。 –

+0

@Conrad Frix。一些实验总是很好,但是有一些规则要遵循。并不是这种情况不常见。最好的建议是为你的具体数据库搜索这个问题的答案,因为这可能会有所作为。 – GolezTrol

回答

2

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

1

如果存储/空间利用率是重要的,不是添加两个单列索引,各A和B

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

有人已经评论过,这些建议都是有教养的猜测。尝试各种选项以找到最佳索引策略是一个好主意。