SQL Server 2008上的大容量重读取负载数据的性能

时间:2012-07-24 11:29:23

标签: sql sql-server-2008 sqlperformance

我遇到了性能问题。

我们有一张表格可以输入数百万条记录,我们正在提供一个网页,每秒钟会有100次点击此表(一个选择)。该查询由非聚集索引(也包含在SP中)

覆盖

我的问题是针对我们想要提高性能的特定场景,我们是否明智地创建一个视图,该视图总是会为此场景生成300行并为视图编制索引并查询视图,否则它将不会如果我用覆盖的查询查询现有的2M加表?

2 个答案:

答案 0 :(得分:1)

您可以创建一个尽可能与您的查询匹配的视图并将其编入索引。据我了解,你只想申请一个where子句。这将起作用,它将减少从零到零的运行时成本。它还将删除不符合条件的所有IO行。这是一个好主意。

但是,您可以使用过滤(覆盖)索引,这更简单。

从覆盖索引中获取范围的速度与获取范围一样快。它非常快。没有任何改进。

真正的问题似乎是你要查询数据库100次!你不能将这些查询折叠成一个或几个更大的查询吗?您可以使用表值参数一次提交多个查询输入,可以这么说。

答案 1 :(得分:0)

根据我的理解,这里针对一个总是产生300行的特定场景,你创建了一个视图。如果这是一个案例,它是处理这个问题的最佳方法。还要在选择列上创建覆盖索引视图肯定会提高性能。