【发布时间】:2011-10-04 16:27:26
【问题描述】:
我有一个包含这些列(id、A、B、C、D、E)的 SQL 表。
我通常查询(A 和 C)和(B 和 C),所以我决定对这 3 个进行索引。对此有一些选择:
- A、B、C 分别索引
- 两对 (A,C) 和 (B,C) 的索引
- (A、B、C)的索引
我应该选择哪个选项?数据库大小可能是个问题,但现在假设这不是什么大问题。
【问题讨论】:
-
你用的是什么数据库?
-
您得到的几乎所有答案都是有根据的猜测。你最好进行实验和测量。
-
@Conrad Frix。一些实验总是好的,但有一些规则要遵循。这并不是一个罕见的案例。最好的建议是为您的特定数据库搜索此问题的答案,因为这可能会有所不同。
-
@GolezTrol 来自 OP 的声明“我通常查询”我认为可以安全地假设正在构建索引以提高 现有 查询的性能。 OP 已经知道候选索引是什么。此时剩下的就是添加索引和测试。 DB 引擎有一个讨厌的习惯,即在您认为应该使用索引时却不使用它。
-
如果你知道索引是如何工作的,你就会知道有些候选是没有意义的。我认为这是一个很好的问题,通过回答,我为 OP 省去了创建和测试 4 个无用索引的负担。
标签: sql indexing database-design