【发布时间】:2011-03-27 20:40:59
【问题描述】:
我正在阅读一个使用关键字 EXPLAIN 来查看查询是如何执行的 SQL 教程。我在 SQL Server 2008 中尝试过,但没有成功。
如何获得等效结果?
【问题讨论】:
标签: sql sql-server-2008 keyword
我正在阅读一个使用关键字 EXPLAIN 来查看查询是如何执行的 SQL 教程。我在 SQL Server 2008 中尝试过,但没有成功。
如何获得等效结果?
【问题讨论】:
标签: sql sql-server-2008 keyword
我相信EXPLAIN 关键字是一个MySQL 概念——等效的Microsoft SQL 服务器概念是执行计划。
获取执行计划的最简单方法是在 SQL Server Management Studio 中打开“显示实际执行计划”菜单项(在查询菜单中)。或者,您可以在此处阅读有关执行计划的更深入指南:
本文更详细地介绍了执行计划是什么、如何获取执行计划以及不同的执行计划格式。
【讨论】:
SET AUTOTRACE OFF --ON,然后是 SQL stmt。您可以使用SELECT PLAN_TABLE_OUTPUT FROM TABLE (DBMS_XPLAN.DISPLAY());显示计划
与 SQL Server 最接近的等效语句是:
SET SHOWPLAN_ALL (Transact-SQL)
或
SET SHOWPLAN_XML (Transact-SQL)
在 SQL Server Management Studio 查询窗口中,您可以运行 SET SHOWPLAN_ALL ON 或 SET SHOWPLAN_XML ON,然后运行您的查询。此时它不会返回查询的结果集,而是返回实际的执行计划。当您运行 SET SHOWPLAN_ALL OFF 或 SET SHOWPLAN_XML OFF 并运行查询时,您将再次获得结果集。
【讨论】:
在 SSMS(我得到 18.3.1)中突出显示有问题的查询并点击 CTRL+L
(这就是 Tobias 提到的 - Query->Display Estimated Query Plan)
【讨论】:
请注意,Microsoft 在 SQL 2012 中向 TSQL 语法添加了 EXPLAIN 命令,但它仅适用于 Azure SQL 数据仓库和并行数据仓库,因此不适用于常规 RDBMS 产品。
它以 XML 格式提供执行计划,并有助于显示计划中将分布在仓库节点中的部分。
来源: TSQL EXPLAIN
【讨论】: