Informix 查询计划
Posted
技术标签:
【中文标题】Informix 查询计划【英文标题】:Informix query plan 【发布时间】:2009-07-21 00:27:03 【问题描述】:如何在 Informix 中获取查询的执行计划?
我需要类似于在 Oracle 中使用 explain plan
或在 SQL Server 中使用 set showplan_all on
获得的东西。
如果这很重要,我正在从 .NET 应用程序(使用 IBM.Data.Informix)进行连接。
谢谢!
【问题讨论】:
【参考方案1】:在您的 SQL 中,您可以:
执行SET EXPLAIN ON;
这将一直有效,直到您断开连接或执行等效的OFF
语句。至少可以追溯到 v7,甚至可以在 v5 中工作。
添加优化器指令(v9 及更高版本),即SELECT +EXPLAIN foo, bar FROM ...
。您还可以使用SELECT --+EXPLAIN \n foo bar ...
,具体取决于您的 SQL 的确切语法(您不能关闭 -- 注释,它会运行到行尾)。此变体仅对 SELECT
语句有效。
解释文件的写入位置很大程度上取决于数据库服务器的操作系统。它可以是您用户的主目录,也可以是$INFORMIXDIR
中的目录。
【讨论】:
@RET:它比版本 5 更早;我相信 SET EXPLAIN 出现在 Informix-SQL 1.10 (1985) 中。 @Diego:总是引用IDS的版本;这很重要。例如,IDS 11.50 提供了一个选项SET EXPLAIN FILE TO 'filename' [WITH APPEND]
;您可以指定文件的创建位置(在服务器上)。但是,输出仍然会转到文件,因此您需要访问服务器上的文件。如果您可以调整它,则可以使用 FILETOCLOB 函数将服务器端文件拉入 CLOB 值:INSERT INTO SomeTable VALUES(FILETOCLOB('/file/name','server'))
然后您可以使用常规 SELECT 将 CLOB 拉到客户端(并解析文件的文本 -玩得开心!)。我没说容易!
@Diego:是的,您需要访问数据库服务器,除非您可以让 Jonathan 的 FILETOCLOB() 方法为您工作。如果将 SET EXPLAIN 添加到您的应用程序是一个问题,您也可以使用 onmode -Y 1 哪个版本的 Informix?
有一些与 v10 相关的信息,用于 [SET EXPLAIN
]。
【讨论】:
以上是关于Informix 查询计划的主要内容,如果未能解决你的问题,请参考以下文章
MS SQL Server 中的链接 Informix 表忽略标准?