3

我有下表,ReportType. 该表将永远只有 100 左右的行,并且永远不会被应用程序更新(所以INSERTUPDATE或者DELETE性能不是问题)。

Table: ReportType
===========================================================
|  ID (PK)  |  Name  |  ExportFormat  |  SourceDatabase   |
===========================================================

还值得在上面放置一个非聚集索引ExportFormat吗?此列在某些场景和某些报表中用作过滤条件。它根本没有高度选择性(可能只有 10 个不同的值),这表明它不会成为非聚集索引的良好候选者。但是这个表从来没有经历过任何INSERT, UPDATEorDELETE操作,所以索引肯定会在这里真正受益(即使只是一点点)?

4

2 回答 2

3

根据经验,少于 128 行的表上的索引增加的开销超过了它的价值。尤其是非聚集索引——单个书签查找可能比扫描整个表更广泛。

于 2013-01-16T14:33:57.350 回答
2

我不同意你接受的答案。

你说这个表是只读的,所以我没有看到创建覆盖非聚集索引的缺点,如下所示。

CREATE NONCLUSTERED INDEX IX 
     ON  ReportType(ExportFormat) INCLUDE(ID,Name,SourceDatabase )

对于如此少量的行,好处可能非常微不足道,但它避免了必须为每个查询过滤处理所有ExportFormat

于 2013-01-16T15:28:11.997 回答