【发布时间】:2012-05-10 12:26:15
【问题描述】:
有什么方法可以检查我的 sql 查询是否处于最佳状态?我正在使用 sql server 2008。例如我想知道我的查询是否达到了预期的索引。
【问题讨论】:
标签: sql-server sql-server-2008 sqlperformance
有什么方法可以检查我的 sql 查询是否处于最佳状态?我正在使用 sql server 2008。例如我想知道我的查询是否达到了预期的索引。
【问题讨论】:
标签: sql-server sql-server-2008 sqlperformance
是的,包括“实际执行计划”。它位于 SQL Management Studio 的查询菜单中。 执行计划将显示查询使用的连接和索引类型。
【讨论】:
使用执行计划来分析您的查询。有关更多信息,请参阅本教程: http://www.simple-talk.com/sql/performance/execution-plan-basics/
【讨论】:
虽然小伙伴们已经建议分析执行计划(确实如此!),但还有另一种方法对不熟悉执行计划的人更友好,在 MSSMS 中,突出显示您的查询并右键单击选择并点击“Analyse Query in Database Tuning Advisor”——耐心等待顾问打开和数据库选择选项卡打开,打开后,选择与查询交互的数据库,然后单击“开始分析”。
这将对所有表、连接等进行粗略检查,它将分析执行计划并告诉您哪些索引“可能”有助于加快查询速度(即避免表扫描)。
但不要盲目接受它的建议,首先备份您的数据库,运行分析器 - 应用建议,如果您的查询表现更好,则进行基准测试 - 冲洗并重复。
例如,如果您的查询正在读取大型表,您可能会发现优化顾问建议创建一个索引,这将花费您大量的磁盘空间,但只会获得较小的速度提升——这是您必须要做的地方问“值得吗?” – 这就是为什么尝试分析器的建议通常是个好主意!
在测试之间,确保清除缓存以确保获得准确的结果:
DBCC FREEPROCCACHE;
DBCC DROPCLEANBUFFERS;
另外,为了更准确的基准测试,使用SET STATISTICS TIME ON; - 不要依赖 MSSMS 中的计数器 - 它有时会滞后。
【讨论】: