索引庞大的表所需的建议

时间:2014-09-04 08:35:48

标签: sql-server indexing

我需要构建一个历史报告,该报告仅从150GB大小的表中提供READ访问权限。我想知道我应该为以下所有内容创建列索引:

  1. 我的报告有10个过滤器要求用户输入。例如。日期时间,Varchar。我应该为所有这些创建10个索引吗?
  2. 我的报告有10个默认硬编码过滤器,例如where code="RAM"。我应该为所有这些创建另外10个索引吗?
  3. 我主要担心的是性能问题。

1 个答案:

答案 0 :(得分:1)

首先,你说你主要关心的是表现。表演阅读或表演写作?

因为理论上你可以将一个表索引到死亡状态,这会使读取变得很好,但每次插入或更新一行时都需要维护和更新它们。

第二个选择标记应该基于经常针对您的表运行的查询。

例如,假设您有一个包含ID, Type, TextValue列的表。在您的应用中,您使用GetByID()方法和ListWithType()方法。您的指示应该基于SQL尝试过滤/加入的内容。在这种情况下,ID(显然是你的PK)和Type上的非唯一索引。

  • 决定哪些表现重要(读或写)
  • 观看您的代码并观察常见和慢速查询
  • 根据您正在进行的各种过滤器/连接创建标记。

这显然是一个简单的概述。我建议您阅读如何阅读SQL Execution Plan并更改您的指标以改进它。

最后,当您创建标记时,请确保选择适当的fill factor(这取决于表格的使用方式),或者您将不断重建它们。