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 ONSET SHOWPLAN_XML ON,然后运行您的查询。此时它不会返回查询的结果集,而是返回实际的执行计划。当您运行 SET SHOWPLAN_ALL OFFSET 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()?

相当于 Sql Server 中的 MySQL ON DUPLICATE KEY UPDATE

SQL Server等待事件—PAGEIOLATCH_EX

Geoserver(三) shp导入mysql

SQL Server 相当于使用 JOIN 避免重复列