科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道理解 DB2 中的列组统计信息

理解 DB2 中的列组统计信息

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

DB2 SQL 优化器(后文简称为优化器)可以估计每个备选访问计划的执行成本,并根据其估计结果选择一个最佳访问计划。一个访问计划可以指定用来解析一条 SQL 语句的操作次序。

来源:IT专家网 2008年6月3日

关键字: IBM 数据库 DB2

  • 评论
  • 分享微博
  • 分享邮件
  1. 为这个查询添加几个冗余的等式谓词 :
    SELECT EMPNO, FIRSTNME, LASTNAME, WORKDEPT, SEX, JOB, SALARY
    FROM EMPLOYEE
    WHERE JOB='ANALYST' AND SEX='F' AND WORKDEPT='C01';

    此查询返回和上面相同的结果集。但是看一下 EXPLAIN 工具生成的查询执行计划,基数估计值并不符合实际结果:

        0.0761719 
         TBSCAN 
         (   2) 
         31.4115 
            2 
           |
           32 
     TABLE: SKAPOOR 
        EMPLOYEE
    

    DB2 优化器假设这三个谓词是彼此独立的,因为不存在相关的索引或列组统计信息。

  2. 在 JOB、WORKDEPT 和 SEX 列中收集列组统计信息。
    RUNSTATS ON TABLE <SCHEMA_NAME>.EMPLOYEE ON ALL COLUMNS AND COLUMNS 
    	((JOB, WORKDEPT, SEX)) WITH DISTRIBUTION;
    

    使用这三个列的列组统计信息,DB2 优化器计算出一个更准确的基数估计值:

         1.77778 
         TBSCAN 
         (   2) 
         31.4214 
            2 
           |
           32 
     TABLE: SKAPOOR 
        EMPLOYEE
    

    与单一谓词查询计算出的结果不同,所计算出的基数估计值并不是 2,这是因为列组统计信息是一个一致分布统计信息。

示例 4:等式连接谓词

这个示例集中关注表 ORG 和 STAFF 的连接。首先,需要在这两个表上收集统计信息。现在,已经收集好了基本的统计信息。

RUNSTATS ON TABLE <SCHEMA_NAME>.ORG;
RUNSTATS ON TABLE <SCHEMA_NAME>.STAFF;

下面的查询连接 ORG 和 STAFF 表:

SELECT STAFF.NAME, ORG.DEPTNUMB, ORG.DEPTNAME, STAFF.SALARY
FROM ORG, STAFF
WHERE ORG.MANAGER = STAFF.ID AND ORG.DEPTNUMB = STAFF.DEPT
ORDER BY ORG.DEPTNUMB;

这个查询返回 8 个记录:

NAME      DEPTNUMB DEPTNAME       SALARY   
--------- -------- -------------- ---------
Molinare        10 Head Office     22959.20
Hanes           15 New England     20659.80
Sanders         20 Mid Atlantic    18357.50
Marenghi        38 South Atlantic  17506.75
Plotz           42 Great Lakes     18352.80
Fraye           51 Plains          21150.00
Lea             66 Pacific         18555.50
Quill           84 Mountain        19818.00

  8 record(s) selected.

  1. 使用 EXPLAIN 工具查看查询执行计划:
                    1 
                 TBSCAN 
                 (   2) 
                 33.2225 
                    2 
                   |
                    1 
                 SORT   
                 (   3) 
                 33.151 
                    2 
                   |
                    1 
                 HSJOIN 
                 (   4) 
                 33.0248 
                    2 
              /-----+-----\
           35                8 
         TBSCAN           TBSCAN 
         (   5)           (   6) 
         17.2334          15.3736 
            1                1 
           |                |
           35                8 
     TABLE: SKAPOOR  TABLE: SKAPOOR 
          STAFF             ORG

    这个示例使用了收集列组统计信息的简单方法。附录 B 包含一些示例,对判定连接中的父表做了进一步的分析。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章