问问题
2392 次
1 回答
6
以几种不同的方式拥有大量索引会产生开销:
- 空间消耗,尽管使用部分索引当然会更低。
- 查询优化,通过使优化器计划的选择变得更加复杂。
- 表修改时间,通过在插入新行或删除或修改当前行时修改索引的额外工作。
默认情况下,我倾向于对索引进行大量索引:
- 空间通常很便宜
- 绑定变量的查询只需要优化一次
- 行的查找通常比修改的频率要高得多,因此设计系统以有效地查找行通常比减少修改行的开销更重要。
- 缺少所需索引的影响可能非常高,即使该索引只是偶尔需要。
我在一个 Oracle 系统上工作过,该系统具有超过 200 列的非规范化报告表,其中 100 列被索引,这不是问题。部分索引本来不错,但 Oracle 不直接支持它们(您使用相当不方便的 CASE hack)。
所以我会继续发挥创意,只要你知道利弊,最好你也会衡量你对系统的影响。
于 2013-08-29T11:51:07.600 回答