是否有可能在DB2中使用绑定变量获得解释计划?

时间:2013-10-21 13:47:54

标签: db2 sql-execution-plan

使用Oracle,语法为:

explain plan for
select * from users WHERE user_name = :user_name AND user_dob = :user_dob

是否可以在DB2中执行相同的操作?以下声明似乎不起作用。

explain plan with snapshot for
select * from users WHERE user_name = :user_name AND user_dob = :user_dob

谢谢。

2 个答案:

答案 0 :(得分:1)

答案可能取决于您的DB2版本和平台,您出于某种原因选择不与我们共享。这适用于DB2 for LUW(v10.1,但我确信它适用于v9.7及更高版本):

$ db2 "explain plan with snapshot for select * from syscat.schemata where schemaname = :blah"
DB20000I  The SQL command completed successfully.

您可能想尝试使用问号替换命名参数标记。

答案 1 :(得分:0)

显然,答案在IBM网站上,但要理解它并不容易。

http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=%2Fcom.ibm.db2.udb.admin.doc%2Fdoc%2Fr0000952.htm

  

FOR explainable-sql-statement

     

指定要解释的SQL语句。此声明可以是任何声明   有效的CALL,复合SQL(动态),DELETE,INSERT,MERGE,SELECT,   SELECT INTO,UPDATE,VALUES或VALUES INTO SQL语句。如果   EXPLAIN语句嵌入在一个程序中   explainable-sql-statement可以包含对宿主变量的引用   (这些变量必须在程序中定义)。同样,如果   EXPLAIN正在动态准备,可解释的-sql语句   可以包含参数标记

但它没有告诉你“参数标记”是什么,所以你必须去搜索它。