使用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
谢谢。
答案 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网站上,但要理解它并不容易。
FOR explainable-sql-statement
指定要解释的SQL语句。此声明可以是任何声明 有效的CALL,复合SQL(动态),DELETE,INSERT,MERGE,SELECT, SELECT INTO,UPDATE,VALUES或VALUES INTO SQL语句。如果 EXPLAIN语句嵌入在一个程序中 explainable-sql-statement可以包含对宿主变量的引用 (这些变量必须在程序中定义)。同样,如果 EXPLAIN正在动态准备,可解释的-sql语句 可以包含参数标记。
但它没有告诉你“参数标记”是什么,所以你必须去搜索它。