Mysql 解释在其他数据库中选择

Mysql 解释在其他数据库中选择,mysql,oracle,firebird,sql-execution-plan,ingres,Mysql,Oracle,Firebird,Sql Execution Plan,Ingres,我发现EXPLAIN SELECT查询在MySQL中非常有用,因为它提供了有关如何执行SQL的信息,并提供了分析的机会,例如,在执行查询和分析统计数据之前,为了改进响应,应该添加的索引缺失 我的问题是:在MS Sql、Firebird、Ingres等数据库中,是否有类似的命令可用? 在Firebird中,我们有一个计划,但非常薄弱,因为很多时候,为了查看一个简单的错误,必须运行很长的查询 致以最良好的祝愿 Mauro H.Leggieri在《甲骨文》中: EXPLAIN PLAN FOR SEL

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

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

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

致以最良好的祝愿


Mauro H.Leggieri

在《甲骨文》中:

EXPLAIN PLAN FOR SELECT …
PostgreSQL
中:

EXPLAIN SELECT …
在SQL Server的

SET SHOWPLAN_XML ON

GO

SELECT …

GO

在甲骨文中,我们有

EXPLAIN PLAN for sql

在MS SQL Server中,可以获取执行计划的文本或XML版本

SET SHOWPLAN_XML ON|OFF
SET SHOWPLAN_TEXT ON|OFF
但是,最好使用SQLServerManagementStudio/TOAD中的可视化工具查看这些内容

另一个非常方便的方法是

SET STATISTICS IO ON|OFF

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

SET SHOWPLAN_TEXT ON and SET SHOWPLAN_TEXT OFF
这将阻止查询实际执行,但会返回查询计划

对于oracle,您可以使用

SET AUTOTRACE ON or EXPLAIN PLAN

(我不知道firebird或ingres)

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

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

set qep
要获取计划但不执行,请选择“还添加”

set optimizeonly
重新启用查询执行:

set nooptimizeonly
要获取已执行查询的实际统计信息,并与“set qep”的输出进行比较,请执行以下操作:


有关上述内容的更多信息,请参阅。

有关Ingres,请参阅以下参考资料:

演示QEP分析和解释的简短案例研究


不错!我真的不知道在Firebird中,当您准备查询时,该计划是可用的。因此,您实际上不必运行查询来发现它的性能很差。在Firebird中,如果使用IBExpert或Database Workbench,您可以很容易地看到问题的根源。有一个很好的计划分析器,它可以显示索引字段或未索引字段
set trace point qe90