1

我已经使用db2exfmt实用程序为查询生成了访问计划,但我无法理解。

请谁能解释一下访问计划(例如括号中的数字是什么意思,/-----+-----\ 等)

    Access Plan:
    -----------
    Total Cost:    15.1619
    Query Degree:  1

          Rows 
         RETURN
         (   1)
          Cost 
           I/O 
            |
            3 
         HSJOIN
         (   2)
         15.1619 
            2 
     /-----+------\
    4                3 
 TBSCAN           TBSCAN
 (   3)           (   4)
 7.58097          7.58036 
    1                1 
    |                |
    4                3 
 TABLE: DB2INST1  TABLE: DB2INST1
  TABA             TABB
   Q2               Q1
4

1 回答 1

5

从下往上读。每个节点都是为满足查询而完成的操作。TBSCAN 意味着扫描整个表(当您的表很小时通常会发生这种情况)。HSJOIN 是一种“哈希连接”——使用哈希图连接内存中两个表的行。

我们来看一个节点

          4
       TBSCAN
       (   3)
       7.58097
          1
          |
          4
   TABLE: DB2INST1.TABA

顶部的“4”是返回的行数下一行“TBSCAN”是使用的算法(TBSCAN 表示表扫描。HSJOIN 表示通过 hashmap 连接)。在 DB2 中,这称为“运算符”。“(3)”是序列号。你可以发现这个查询被分解为 4 个步骤。7.58097 是执行这个查询到这一步的累积成本,在称为“timerons”的东西中。它会根据您的数据库配置方式进行调整,优化器将选择一个访问计划来最小化此成本。底部 4 是操作在 I/O 方面的成本。

db2exfmt 中还有很多您已经省略的信息。但是该图告诉您 DB2 将如何执行查询。

于 2012-09-07T18:39:53.340 回答