EXPLAIN作为db2的查询计划,一般情况下需要自己打开,可是一般都是运行db2 -tvf EXPLAIN.DDL可是我运行了很多次都是错误的
![](https://box.kancloud.cn/2016-02-23_56cbb4c37f1db.jpg)
因为不在同一个目录,就会有错误。
应该这样写:db2 -tvf "C:\Program Files (x86)\IBM\SQLLIB\MISC\EXPLAIN.DDL"
EXPLAIN.DDL的默认目录在C:\Program Files (x86)\IBM\SQLLIB\MISC\下,没在同一个目录就会有错误。
但有时还是会有错误,实际上这句执行很多SQL,创建不少表。如果发现问题,可以删除对应的表和索引。
删除对应的表索引,试图
~~~
db2 drop TABLE EXPLAIN_ACTUALS
db2 drop FUNCTION EXPLAIN_GET_MSGS
db2 drop INDEX PRT_I1
db2 drop INDEX MQT_I2
db2 drop INDEX MQT_I1 on ADVISE_MQT
db2 drop INDEX IDX_I2
db2 drop INDEX IDX_I1
db2 drop INDEX EXP_DIAG_DAT_I1
db2 drop INDEX OBJ_I1
db2 drop INDEX STM_I1
db2 drop INDEX PRD_I1
db2 drop INDEX ARG_I1
db2 drop INDEX STMT_I1
db2 drop TABLE ADVISE_TABLE
db2 drop TABLE ADVISE_PARTITION
db2 drop TABLE ADVISE_MQT
db2 drop TABLE ADVISE_WORKLOAD
db2 drop TABLE ADVISE_INDEX
db2 drop TABLE ADVISE_INSTANCE
db2 drop TABLE OBJECT_METRICS
db2 drop TABLE EXPLAIN_DIAGNOSTIC_DATA
db2 drop TABLE EXPLAIN_DIAGNOSTIC
db2 drop TABLE EXPLAIN_STREAM
db2 drop TABLE EXPLAIN_PREDICATE
db2 drop TABLE EXPLAIN_OPERATOR
db2 drop TABLE EXPLAIN_OBJECT
db2 drop TABLE EXPLAIN_ARGUMENT
db2 drop TABLE EXPLAIN_STATEMENT
db2 drop TABLE EXPLAIN_INSTANCE
~~~
重新创建相应的表索引,视图
db2 -tvf "C:\Program Files (x86)\IBM\SQLLIB\MISC\EXPLAIN.DDL" >d:\22.txt