1

我有一个性能问题。

我们有一个包含几百万条记录的表,我们正在提供一个网页,该网页每秒点击该表 100 次(选择)。查询由非聚集索引覆盖(也包含在 SP 中)

我的问题是对于我们想要提高性能的特定场景,我们是否明智地创建一个视图,该视图将始终为该场景产生 300 行并索引视图并查询视图,或者如果我没有任何区别使用覆盖查询查询现有的 2M plus 表?

4

2 回答 2

1

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

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

从覆盖索引中获取范围是尽可能快的。它非常快。没有改进的可能。

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

于 2012-07-24T11:39:01.223 回答
0

嗨,根据我的理解,对于一个总是产生 300 行的特定场景,您正在创建一个视图。因此,如果这是一种情况,它是处理此问题的最佳方法。此外,在视图上的选择性列上创建覆盖索引将肯定会提高性能。

于 2012-07-24T12:06:06.477 回答