SQL Server 相当于 MySQL 的 EXPLAIN
Posted
技术标签:
【中文标题】SQL Server 相当于 MySQL 的 EXPLAIN【英文标题】:SQL Server equivalent to MySQL's EXPLAIN 【发布时间】:2010-08-10 14:06:33 【问题描述】:我正在阅读一个使用关键字 EXPLAIN 来查看查询是如何执行的 SQL 教程。我在 SQL Server 2008 中尝试过,但没有成功。
如何获得等效结果?
【问题讨论】:
How do I obtain a Query Execution Plan?的可能重复 【参考方案1】:我相信EXPLAIN
关键字是一个mysql 概念——等效的Microsoft SQL 服务器概念是执行计划。
获取执行计划的最简单方法是在 SQL Server Management Studio 中打开“显示实际执行计划”菜单项(在查询菜单中)。或者,您可以在此处阅读有关执行计划的更深入指南:
http://www.simple-talk.com/sql/performance/execution-plan-basics/本文更详细地介绍了执行计划是什么、如何获取执行计划以及不同的执行计划格式。
【讨论】:
有关执行计划的(大量)更多信息,请参见此处:simple-talk.com/sql/performance/execution-plan-basics。在某些版本的 SSMS 中,菜单项将称为“显示估计查询计划” 谢谢,现在找到了。 @tobia +1,@kragen +1。 它在 Oracle 中也可用:SET AUTOTRACE OFF --ON
,然后是 SQL stmt。您可以使用SELECT PLAN_TABLE_OUTPUT FROM TABLE (DBMS_XPLAN.DISPLAY());
显示计划【参考方案2】:
The MySql EXPLAIN statement can be used either as a synonym for DESCRIBE or as a way to obtain information about how MySQL executes a SELECT statement.
与 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
并运行查询时,您将再次获得结果集。
【讨论】:
"SET SHOWPLAN_ALL ON" -- 谢谢,为什么这不是公认的答案,而不是告诉我咨询 GUI 的答案?【参考方案3】:在 SSMS(我得到 18.3.1)中突出显示有问题的查询并点击 CTRL+L
(这就是 Tobias 提到的 - Query->Display Estimated Query Plan
)
【讨论】:
这应该是答案。【参考方案4】:请注意,Microsoft 在 SQL 2012 中向 TSQL 语法添加了 EXPLAIN 命令,但它仅适用于 Azure SQL 数据仓库和并行数据仓库,因此不适用于常规 RDBMS 产品。
它以 XML 格式提供执行计划,并有助于显示计划中将分布在仓库节点中的部分。
来源: TSQL EXPLAIN
【讨论】:
以上是关于SQL Server 相当于 MySQL 的 EXPLAIN的主要内容,如果未能解决你的问题,请参考以下文章
相当于 MySQL REGEXP 的 Microsoft SQL Server
相当于mySQL中的SQL Server函数SCOPE_IDENTITY()?