65.9K
CodeProject 正在变化。 阅读更多。
Home

Visual Studio 的 SQL 优化器:使用 Quest Software 的此扩展自动提高查询速度

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2006 年 11 月 7 日

4分钟阅读

viewsIcon

45886

了解如何更改编写查询的方式可以使其运行得更快。本文将介绍优化 SQL 的自动化方法。DBA 已经这样做了很多年,现在开发者也可以使用了。

这是我们 CodeProject 赞助商的产品展示评测。这些评测旨在为您提供我们认为对开发者有用且有价值的产品和服务信息。

引言

在开发过程中优化 SQL 语句可以节省大量时间和金钱,方法是确保您的应用程序以最佳性能运行,同时不会给数据库造成过重负担。本文将介绍 Visual Studio 开发者如何在无需 DBA 技能的情况下解决 SQL Server 性能问题。

Visual Studio 开发者 vs. SQL Server DBA

在开发过程中,一个经常被忽略的简单事实是 SQL 语句是可以优化的。执行计划、逻辑读取、CPU 时间等概念似乎令人困惑,常常留给 SQL Server DBA 处理。因此,应用程序直到从开发迁移到生产环境后才进行 SQL 性能调优。DBA 非常清楚在生产环境中对应用程序 SQL 进行性能调优的成本。然而,他们也认识到,过去开发者缺乏进行 SQL 性能调优所需的深入知识。

SQL Server 查询

您知道如何编写 SELECTINSERTUPDATEDELETE 语句。但是,您是否知道可以有成千上万种方法来编写 SQL 语句并产生完全相同的结果?当您向 SQL Server 发出查询时,它会在执行语句之前对其进行处理。它会查找主键、索引、排序以及各种其他因素。综合考虑这些因素以及其他统计信息,SQL Server 会生成一个执行计划。该计划决定了服务器将如何检索您的 SQL 所请求的记录。SQL 语句编写方式的差异会导致 SQL Server 创建不同的执行计划。不同的执行计划会导致 SQL Server 更改其检索记录的方式。这些不同实现方式的性能各不相同,有些慢,有些快。找到编写 SQL 语句的最快方法是在数据库应用程序中实现最佳性能的关键。像 Quest Software 的 Visual Studio SQL 优化器这样的工具能够理解执行计划和相关统计信息的每一个细节,并利用这些信息来优化您的 SQL 语句。

工作原理

检查原始查询,看看可以应用哪些转换。过去您可能考虑过的一种简单转换是,在 where 子句中使用 INEXISTS 还是链式 OR。SQL 优化器引擎知道几十种此类转换,它们的复杂程度各不相同。应用转换后,它会查看生成的语句,再次检查哪些转换可以应用。

图 1. 转换 SQL 以产生许多重写。

经过这个过程的几次迭代后,它会产生许多编写相同 SQL 语句的不同方式。使用基于集合论的数学模型,原始语句的每一次重写都保证在语义上是等价的。换句话说,它们在执行时都会产生相同的记录。最后,SQL 优化器使用人工智能“反馈搜索”引擎,找到编写 SQL 语句的最佳方法。结果就是优化后的 SQL。

在 Visual Studio 中直接优化 SQL

Visual Studio SQL 优化器扩展了 Visual Studio,使任何开发人员都可以利用此过程,轻松优化其 SQL 语句。

安装 SQL 优化器后,右键单击任何解决方案或项目节点,即可找到应用程序中的所有 SQL。应用程序的所有相关源代码都将被扫描以查找 SQL 语句。

图 2. 在解决方案/项目中查找所有 SQL。

每个 SQL 语句都将添加到 SQL 资源管理器中。您可以查看哪些语句已被优化以及最后一次优化日期。SQL 资源管理器还会对您的 SQL 语句进行分类,以便您一目了然地知道哪些语句是简单的、复杂的,甚至是潜在有问题。

图 3. Visual Studio 中的 SQL 资源管理器用于管理项目中的 SQL

从 SQL 资源管理器中右键单击即可开始对资源管理器中任何或所有语句进行自动优化。完成后,您可以查看一个报告,将语句的优化前和优化后版本进行比较,展示您获得的性能提升程度。

图 4. SQL 优化后查看性能改进。

结论

无论您的 SQL 是嵌入在 VB.Net 中还是存储在存储过程中,Visual Studio SQL 优化器都可以自动化优化过程。Visual Studio SQL 优化器支持 SQL Server 2000 和 2005,以及 Visual Studio 2003 & 2005。

© . All rights reserved.