扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
2. 确定这两个表是否是并置的
假设有两个表,T1 和 T2,T1 属于节点组 N0 而 T2 属于节点组 N1,其中 N0 包含分区数 0 和 1 ,N1 包含分区数 1 和 2 。由于这两个表不在同一个节点组,将认为它们不是并置的。
3. 确定连接的谓词是否引用所有的分区键列
假设有两个表,T1 和 T2。T1 在多个数据库分区中被分区,分区键在列(C1 和 C2)。同样,T2 也被分区,分区键在列(C2 和 C3)。
3.1 使用这些谓词来连接 T1 和 T2:
P1: T1.C1=T2.C2 P2: T1.C2=T2.C3 |
这两个谓词都包含了所有的分区键列。
例 3.2 如果在示例 3.1 谓词中添加第三个谓词 P3,T1.C3=T2.C1,那么这三个谓词合起来仍然包含两个表中的所有分区键列。然而,如果仅使用 P1 和 P3,所有这三个谓词并不包含分区键列。
例 3.3如果在示例 3.1 谓词中添加第三个谓词 P3,T1.C3=T2.C3,那么这三个谓词合起来仍然包含两个表中的所有分区键列。然而,如果只使用P1 和 P3,那么只包含了 T2 的分区键列而没有包含 T1 的,所以条件并不符合。
完全限定的惟一索引
如果在上述条件的基础上,没有一个表被指定为连接的父表,优化器将进一步检查一个完全限定的惟一索引。如果连接谓词完全限定一个惟一索引,优化器使用惟一索引的 FULLKEYCARD 统计信息来检测和说明相等连接谓词之间的统计相关性。
两个表引用相同的基表,这种自连接是中立连接的特例。在 V8.2 中,优化器开始为这种特例说明统计相关性。
这个例子主要关注表 ORG 和 STAFF 间的连接。首先,需要为表收集统计信息。现在,已经收集了基本的统计信息:
RUNSTATS ON TABLE <SCHEMA_NAME>.ORG; RUNSTATS ON TABLE <SCHEMA_NAME>.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; |
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 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 |
2. 查看连接谓词引用的列的列统计信息。如下查询为两个连接谓词中引用的表 ORG 和 STAFF 中的列从 DB2 目录表中检索有趣的列统计信息:
SELECT SUBSTR(COLNAME,1,20) AS COLNAME, COLCARD, SUBSTR(HIGH2KEY,1,10) AS HIGH2KEY, SUBSTR(LOW2KEY,1,10) AS LOW2KEY FROM SYSSTAT.COLUMNS WHERE TABNAME IN ('ORG', 'STAFF') AND COLNAME IN ('MANAGER', 'DEPTNUMB', 'ID', 'DEPT') ORDER BY TABNAME, COLNAME; |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者