删除语句需要很长时间

时间:2019-05-21 11:50:03

标签: db2

我正在尝试从DB2 10.5中的父表(主键为 COL_A 的TAB_A)中删除1条记录。该表有许多子表,但是数据已从子表中删除。由于外键约束,子表(TAB_B)索引扫描(IDX1_TAB_B)中的一个花费很高。 TAB_B的综合索引为(IDX1_TAB_B = COL_C + COL_A )。在下面附加执行计划:

优化计划:

                                                                                                                 Rows
                                                                                                               Operator
                                                                                                                 (ID)
                                                                                                                 Cost

                                                                                                                0.04
                                                                                                               FILTER
                                                                                                                ( 2)
                                                                                                               1450.45
                 +-------------------------+-------------------+--------------------------------------+----------+-------------------+---------------------+-------------------------+---------------------------+
                  1                      1.66864             1.07095                                   0                           6.30251               1.26543                   25.0657                        1
               DELETE                    IXSCAN              IXSCAN                                  FETCH                         IXSCAN                IXSCAN                    IXSCAN                      IXSCAN
                ( 3)                      ( 5)                ( 6)                                   ( 7)                           ( 9)                  (10)                      (11)                        (12)
               22.7049                   22.7038             **1344.45**                               0.0107876                       15.1445               22.7036                   7.58684                     15.1433
          /---/       \                    |                   |                             /----/         \                        |                     |                         |                           |
      1             6.91522e+06       6.56409e+06            75669                      0                       0                1.01318e+06           4.86182e+06                  213                     1.66563e+06
   IXSCAN         Table:            Index:               Index:                         IXSCAN           Table:                 Index:               Index:                 Index:                      Index:
    ( 4)          GEXPDBA           GEXPUSRT             GEXPDBA                         ( 8)            GEXPDBA                GEXPUSRT             GEXPUSRT               GEXPDBA                     GEXPDBA
   15.1415        TAB_A             IX6_XXXXXXXXXXXX     **IDX1_TAB_B**                    0.0105474         TZZZZZZZZZZZZZZZZZZZZ  IX1_LLLLLLLLLLLLLLL  IX1_LOOOOOOOOOOOOOOOO  IX1_LOCCCCCCCCCCCCCCCCCCCC  IDX_GE
     |                                                                                 |
 6.91522e+06                                                                           0

索引:索引:  GEXPDBA  IDX_TAB_A IDX_ZZZZZZZZZZZZZZZZZ

1 个答案:

答案 0 :(得分:0)

FK列不在索引列列表的开头(即(..., FKcol1 [, FKcol2, ...]))的索引通常不如FK列在索引列列表的开头(即{{1 }}),当子表涉及需要与其父表联接的操作时,如问题中所述。
因此,解决方案就是创建这样的索引以提高父表的操作性能((FKcol1 [, FKcol2, ...])语句)。