首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过向数据库添加索引来提高应用程序性能

通过向数据库添加索引来提高应用程序性能
EN

Stack Overflow用户
提问于 2015-02-15 18:41:20
回答 2查看 527关注 0票数 0

我有一个旧的web应用程序,有很多遗留代码,我需要提高一些报告的性能。我希望避免重写报告,因为它是标准的遗留应用程序,很难维护、测试和开发。因此,我试图通过在MSSQL (2008)中为报表查询添加索引来加快这些报告的速度。报表执行大约3-4k查询。

以下是我的改进计划:

  1. 通过运行MSSQL缓冲区清除

代码语言:javascript
复制
DBCC DROPCLEANBUFFERS  
DBCC FREEPROCCACHE  
DBCC DROPCLEANBUFFERS
  1. 运行MSSQL分析器,然后执行报告。
  2. 收集所有报表的查询,然后将它们导出到MSSQL。
  3. 计算持续时间的总和。
  4. textdata对查询进行分组,并按sum(duration) desc对查询进行排序。
  5. 从分析器的导出中执行查询并添加推荐的索引。
  6. 从1到6重复步骤,并比较结果。

我得到了有趣的结果。当我改进报告#1的性能时,报告#2的性能就会下降。另外,有时在添加索引之后,性能会下降十倍。

我的问题:

  1. 通过改进SQL查询性能来提高应用程序性能是个好主意吗?
  2. 是否可以通过添加索引来提高执行3-4k SQL查询的报表的性能?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-15 21:01:41

对于性能不佳的数据库,不适当/缺少索引可能是许多原因之一。 如果您认为没有足够的索引是导致性能低下的原因,那么就有工具可以检查缺少的索引是否是实际的问题,但有时问题可能是查询本身。 如果您的查询写得很糟糕,不管您添加了多少索引,它的性能都会很差。 有时候查询写得很好,有足够的索引来支持查询,但是没有足够的资源(内存、RAM、处理器马力)来快速完成工作。 我建议您在开始添加索引之前对数据库进行更多的调查,并引入更多以前从未存在过的问题。

一些有用的链接

  1. Are you using SQL's Missing Index DMVs? 这将允许您查看是否有缺少的索引,查询可以通过添加索引获得性能。
  2. Wait statistics, or please tell me where it hurts 这个由Paul撰写的博客将帮助您准确地了解导致sql服务器性能缓慢的原因。无论是您的硬件、索引还是查询。
  3. Most Expensive Queries 这将允许您查看数据库中最昂贵的查询,我将逐个查询并尝试改进代码(如果可能的话),并检查是否有任何索引可以帮助查询降低其成本。

Import

sql server中的性能调优并不是一项简单的任务,也没有灵丹妙药,您需要更多地研究数据库中的实际瓶颈,并针对这些瓶颈进行定位,并通过每次更改比较该更改如何影响数据库性能。祝你好运:)

票数 1
EN

Stack Overflow用户

发布于 2015-02-15 20:25:52

  1. 如果DB是瓶颈,那么通过改进SQL查询性能来提高应用程序性能是一个好主意。根据上面提供的信息,我可以说,在您的例子中,DB性能非常重要,值得改进。
  2. 通过添加索引可以显着地提高执行大量查询的报表的性能。尤其是如果表本身包含大量记录(10 000或更多)。但是,索引也有自己的缺点:

代码语言:javascript
复制
- they slowdown insertions/updates/deletions
- they influence query execution plan. As a result in some cases DB manager chooses to use index when it would be more appropriate to perform full table scan. Which in turn causes performance degradation.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28529696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档