19

我发现EXPLAIN SELECT查询在 MySQL 中非常有用,因为它提供了有关如何执行 SQL 的信息,并提供了分析的机会,例如,在执行查询本身和分析统计数据之前,您应该添加缺失的索引以改善响应。

我的问题是:在 MS Sql、Firebird、Ingres 等数据库中,是否有类似的命令可用?

在 Firebird 中,我们有 PLAN,但它非常薄弱,因为很多时候必须运行很长的查询才能查看一个简单的错误。

此致,

毛罗·H·莱吉里

4

6 回答 6

19

Oracle

EXPLAIN PLAN FOR SELECT …

PostgreSQL

EXPLAIN SELECT …

SQL Server

SET SHOWPLAN_XML ON

GO

SELECT …

GO
于 2009-08-31T15:24:11.500 回答
4

对于 mssql 服务器,您可以使用

SET SHOWPLAN_TEXT ON and SET SHOWPLAN_TEXT OFF

这将阻止查询实际执行,但会返回查询计划。

对于甲骨文,您可以使用

SET AUTOTRACE ON or EXPLAIN PLAN

(我不知道firebird或ingres)

于 2009-08-31T15:24:45.443 回答
3

甲骨文我们有

EXPLAIN PLAN for sql

http://www.adp-gmbh.ch/ora/explainplan.html

MS SQL Server中,您可以获得执行计划的文本或 XML 版本。

SET SHOWPLAN_XML ON|OFF
SET SHOWPLAN_TEXT ON|OFF

但是,最好使用 Sql Server Management Studio/TOAD 中的可视化工具查看这些内容。

http://msdn.microsoft.com/en-us/library/ms176058.aspx

其他非常方便的东西是

SET STATISTICS IO ON|OFF
于 2009-08-31T15:24:42.247 回答
3

对于 Ingres,以下将为您提供最终选择的计划,并估计行数、磁盘 IO 和 CPU 周期:

set qep

要获取计划但不执行 SELECT 还要添加

set optimizeonly

重新启用查询执行:

set nooptimizeonly

获取执行查询的实际统计信息,与“set qep”的输出进行比较:

set trace point qe90

有关上述内容的更多信息,请参阅http://docs.ingres.com/Ingres/9.2/SQL%20Reference%20Guide/set.htm

于 2009-08-31T18:03:57.213 回答
0

对于 Ingres,另请参阅以下资源:

阅读和解释查询执行计划 (QEP) 的示例 [pdf]

一个简短的案例研究,展示了 QEP 的分析和解释

使用 JDBC 获取 Ingres Qep LockTrace

查询执行计划 (QEP)

于 2009-10-28T14:01:06.060 回答
0

在执行查询时,MS SQL 在 Management Studio 中有一个称为显示执行计划(估计和精确)的实用程序。它还可以显示查询的统计信息(运行时间、行数、流量等)

于 2009-08-31T15:24:49.517 回答