确定能否优化事件

如果 SQL Server 数据库引擎优化顾问不优化某个事件,则会将该事件写入优化日志。在 SQL Server 数据库引擎优化顾问图形用户界面 (GUI) 中,可以在**“常规”选项卡上选择“保存优化日志”,然后在“进度”**选项卡下部的窗格中查看该日志。如果您使用的是 dta 实用工具,则可以使用 -e 参数指定优化日志文件的名称和位置。有关详细信息,请参阅如何查看优化输出

数据库引擎优化顾问未能优化事件的常见原因

以下是 SQL Server 数据库引擎优化顾问不优化事件的一些最常见的原因:

  • 工作负荷引用了用户未选择优化的表。

  • 工作负荷引用的表过小,例如包含的数据页少于 10 页的表。

  • SQL Server 数据库引擎优化顾问无法在指定的时间限制内优化工作负荷。

有关详细信息,请参阅事件未被优化的原因

确定能否优化事件

确定 SQL Server 数据库引擎优化顾问能否优化某个特定事件的最简单方法是确定能否获取该事件的显示计划输出。使用 SQL Server Management Studio 来确定能否获取显示计划输出。只有在服务器在执行相应事件的数据库中为该事件生成了显示计划输出的情况下,SQL Server 数据库引擎优化顾问才能优化该事件。有关详细信息,请参阅显示图形执行计划 (SQL Server Management Studio)

为什么数据库引擎优化顾问建议删除大量对象?

如果 SQL Server 数据库引擎优化顾问生成大量删除物理设计结构的建议,则原因可能如下:

  • 如果您的工作负荷很小或它引用的物理设计结构子集很小,则 SQL Server 数据库引擎优化顾问会建议删除其余物理设计结构,因为工作负荷没有引用它们。SQL Server 数据库引擎优化顾问假定此工作负荷代表的是服务器的正常工作负荷,并根据这一假定给出建议。

  • 如果工作负荷中的大多数查询都被忽略,将生成大量删除物理设计结构的建议,原因可能如下:

    • 使用 dta 实用工具为 -d 参数指定的数据库不正确。

    • 工作负荷中的大多数查询引用了包含的数据页少于 10 页的小表。

    • 工作负荷中的大多数 Transact-SQL 语句不引用可优化的对象。例如,工作负荷包含许多 SET 语句或 DECLARE 语句。

若要确定导致 SQL Server 数据库引擎优化顾问生成大量删除建议的实际原因,请查看优化日志消息。有关详细信息,请参阅关于优化日志