【问题标题】:EXPLAIN SELECT in other databasesEXPLAIN SELECT 在其他数据库中
【发布时间】:2010-11-24 09:14:40
【问题描述】:

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

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

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

最好的问候,

毛罗·H·莱吉里

【问题讨论】:

  • 在 Firebird 中,当您准备查询时,PLAN 可用。因此,您实际上不必运行查询来发现它的性能很差。
  • 在 Firebird 中,如果您使用 IBExpert 或 Database Workbench :您可以很容易地看到问题出在哪里。有一个不错的计划分析器可以显示索引或未索引字段

标签: mysql oracle firebird sql-execution-plan ingres


【解决方案1】:

Oracle:

EXPLAIN PLAN FOR SELECT …

PostgreSQL:

EXPLAIN SELECT …

SQL Server:

SET SHOWPLAN_XML ON

GO

SELECT …

GO

【讨论】:

    【解决方案2】:

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

    SET SHOWPLAN_TEXT ON and SET SHOWPLAN_TEXT OFF
    

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

    对于 oracle,您可以使用

    SET AUTOTRACE ON or EXPLAIN PLAN
    

    (我不知道 firebird 或 ingres)

    【讨论】:

    • 不错!我真的不知道
    【解决方案3】:

    Oracle 中我们有

    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
    

    【讨论】:

      【解决方案4】:

      对于 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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

          Example of Reading and Interpreting a Query Execution Plan (QEP) [pdf]

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

          Getting Ingres Qep LockTrace Using JDBC

          The Query Execution Plan (QEP)

          【讨论】:

            猜你喜欢
            • 2011-11-25
            • 2017-11-12
            • 2015-09-25
            • 1970-01-01
            • 1970-01-01
            • 2011-03-21
            • 1970-01-01
            • 2011-03-28
            • 1970-01-01
            相关资源
            最近更新 更多