我需要构建一个历史报告,它只能从150GB大小的表中提供读访问权限。我想知道我应该创建以下所有列索引:索引巨大表格所需的建议
- 我的报告有10个过滤器,要求用户input.E.g。日期时间,Varchar。我应该为它们创建10个索引吗?
- 我的报告有10个默认硬编码过滤器,例如
where code="RAM"
。我应该为他们创建另外10个索引吗?
我主要关心的是性能问题。
我需要构建一个历史报告,它只能从150GB大小的表中提供读访问权限。我想知道我应该创建以下所有列索引:索引巨大表格所需的建议
where code="RAM"
。我应该为他们创建另外10个索引吗?我主要关心的是性能问题。
首先,你说你最关心的是表现。表演阅读或表演写作?
因为从理论上讲,你可以将一张表格编入索引到死亡状态,这会使阅读变得更好,但是每次插入或更新一行时都需要维护和更新。
第二选择标记应该基于哪些查询经常针对您的表运行。
例如,假设您有一个列表ID, Type, TextValue
。在你的应用程序中,你有一个GetByID()
方法和一个ListWithType()
方法。您的标记应基于SQL试图过滤/加入的内容。在这种情况下,ID(您的PK显然)以及类型上的非唯一索引。
这显然是一个简单的概述。我建议你阅读如何阅读SQL Execution Plan并改变你的指示以改善它。
最后,当您创建标记时,请确保您选择了合适的fill factor(这取决于表的使用方式),否则您将不断重建它们。
应用10个默认硬编码过滤器后,剩下多少行?日常的载入甚至索引视图可能是一个很好的起点。 – 2014-09-04 08:46:50
我还假设你不能创建一个汇总/报告表 – Liath 2014-09-04 08:48:06
150GB是 - 啊 - 不是休息。家伙;)如果Threes很好但是不大,那么这个尺寸就是中等尺寸。抓住一些固态硬盘,看到东西飞(只需升级我们的服务器来处理3000GB数据)。 – TomTom 2014-09-04 08:51:45