Sql server 2005 优化前5%用户的查询

Sql server 2005 优化前5%用户的查询,sql-server-2005,tsql,sql-server-2008,optimization,Sql Server 2005,Tsql,Sql Server 2008,Optimization,在我的网站上,有一群“超级用户”,他们非常棒,在我的网站上添加了很多内容 然而,他们丰富的活动已经导致他们的个人资料页面慢了很多。对于95%的其他用户来说,返回数据的存储过程非常快。这只适用于这些超级用户群体,同样的过程是缓慢的 如何为这组用户优化查询 您可以假设已经构造了正确的索引 编辑:好吧,我想我说得太含糊了。换言之,我如何优化我的网站以提高这5%用户的性能。鉴于此存储过程与每个用户使用的存储过程相同,并且已经进行了很好的优化,我猜接下来的步骤是探索数据层和应用层上的缓存可能性 EDIT2

在我的网站上,有一群“超级用户”,他们非常棒,在我的网站上添加了很多内容

然而,他们丰富的活动已经导致他们的个人资料页面慢了很多。对于95%的其他用户来说,返回数据的存储过程非常快。这只适用于这些超级用户群体,同样的过程是缓慢的

如何为这组用户优化查询

您可以假设已经构造了正确的索引

编辑:好吧,我想我说得太含糊了。换言之,我如何优化我的网站以提高这5%用户的性能。鉴于此存储过程与每个用户使用的存储过程相同,并且已经进行了很好的优化,我猜接下来的步骤是探索数据层和应用层上的缓存可能性


EDIT2:我的超级用户与其他用户之间的唯一区别是他们添加了多少内容。因此,我想瓶颈只是正在获取的记录的数量。一个普通用户向我的站点添加大约200个项目。这些超级用户添加了超过10000个项目。在他们的个人资料中,我显示了他们添加的所有项目(您可以滚动查看)。

好吧,您不能为特定的结果集优化查询,而让其余的查询保持不变。如果你知道我的意思。我猜只有一个查询需要更改,因此您将针对每种类型的用户对其进行优化。因此,此优化场景与任何其他场景都没有区别。找出问题所在;返回的数据是否太多?由于数据量太大,计算时间太长?经济放缓的具体原因是什么?这些是你需要问自己的问题

然而,我看到你在谈论个人资料页面速度慢。当您认为返回该信息的查询已经被优化(因为它适用于95%)时,您可能会考虑某种形式的缓存配置文件页内容。一般来说,配置文件页面不必提供实时信息

缓存可以用很多方法来完成,在这个答案中涉及的方法太多了。但给你举一个小例子;你可以使用临时表。您的“配置文件查询”返回该临时表中的信息,即已计算的信息。因为该查询很简单,所以执行起来不会花那么多时间。同时,确保临时表定期刷新

只是一些想法。我希望它们对你有用

编辑:

一个普通用户向我的站点添加大约200个项目。这些超级用户添加了超过10000个项目。 在他们的个人资料中,我展示了所有 他们添加的项目(您可以滚动 通过他们)


一个明显的帮助是限制查询中的结果数量,或者应用一种分页形式(在DAL中,而不是在UI/BLL中!)。

好的,您不能为特定的结果集优化查询,而让其余的查询保持不变。如果你知道我的意思。我猜只有一个查询需要更改,因此您将针对每种类型的用户对其进行优化。因此,此优化场景与任何其他场景都没有区别。找出问题所在;返回的数据是否太多?由于数据量太大,计算时间太长?经济放缓的具体原因是什么?这些是你需要问自己的问题

然而,我看到你在谈论个人资料页面速度慢。当您认为返回该信息的查询已经被优化(因为它适用于95%)时,您可能会考虑某种形式的缓存配置文件页内容。一般来说,配置文件页面不必提供实时信息

缓存可以用很多方法来完成,在这个答案中涉及的方法太多了。但给你举一个小例子;你可以使用临时表。您的“配置文件查询”返回该临时表中的信息,即已计算的信息。因为该查询很简单,所以执行起来不会花那么多时间。同时,确保临时表定期刷新

只是一些想法。我希望它们对你有用

编辑:

一个普通用户向我的站点添加大约200个项目。这些超级用户添加了超过10000个项目。 在他们的个人资料中,我展示了所有 他们添加的项目(您可以滚动 通过他们)


这方面的一个明显帮助是限制查询中的结果数量,或者应用一种分页形式(在DAL中,而不是在UI/BLL中!)。

我想您可以总结如下:

平均每个用户添加大约200个项目 到我的网站。这些超级用户增加了 10000件。在他们的个人资料上,我是 显示他们添加的所有项目 (您可以滚动浏览它们)


实现分页,以便一次只能获取100个或更多信息?

我想您可以总结如下:

平均每个用户添加大约200个项目 到我的网站。这些超级用户增加了 10000件。在他们的个人资料上,我是 显示他们添加的所有项目 (您可以滚动浏览它们)


实现分页,使其一次只能获取100个数据或其他数据?

为这些用户划分/分离数据,然后相关的表将仅由他们使用

在集群环境中,我相信SQL会认识到这一点,并分散负载以进行补偿,但是在单服务器环境中,我不完全确定它是如何进行优化的

所以本质上(当然大大简化了)

如果您有一个名为“Articles”的表,则有两个表。。。“文章”,“前5个百分点”。 因为数据现在被分成两个更小的数据子集,所以索引更小,数据库中单个表上的读写请求也会减少

从业务层的角度来看,这并不理想,因为您需要这样做