小表中列的非聚集索引

时间:2013-01-16 14:28:53

标签: sql sql-server tsql database-design indexing

我有下表ReportType。此表将只有100行左右,并且永远不会被应用程序更新(因此INSERTUPDATEDELETE性能不是问题。

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

是否仍然需要在ExportFormat上放置非聚集索引?在某些情况下和某些报告中,此列用作过滤条件。它根本不具有高度选择性(可能只有10个不同的值),这表明它不会成为非聚集索引的良好候选者。但是这个表从未经历任何INSERTUPDATEDELETE操作,所以肯定一个索引在这里实际上会受益(即使只是略微)?

2 个答案:

答案 0 :(得分:3)

根据经验,一个少于128行的表上的索引会增加开销,而不是它的价值。特别是非聚集索引 - 单个书签查找可能比扫描整个表格更具扩展性。

答案 1 :(得分:2)

我不同意你接受的答案。

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

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

对于如此少量的行,其好处可能非常微不足道,但它避免了必须为ExportFormat

上的每个查询过滤处理所有