db2 表關聯查詢

2022-05-09 21:22:51 字數 2534 閱讀 6308

今天在mapreduce的練習中看到了乙個題目:

file:

child      parent    

---------- ----------

tom lucy

tom jack

jone lucy

jone jack

lucy mary

lucy ben

jack alice

jack jesse

terry alice

terry jesse

philip terry

philip alma

mark terry

mark alma

輸出結果要求:

grandchild grandparent

---------- -----------

jone mary

jone ben

jone alice

jone jesse

mark alice

mark jesse

philip alice

philip jesse

tom mary

tom ben

tom alice

tom jesse

我在思考,這個如果是db2的乙個表,應該能通過表連線來實現這個要求。於是生成表parent:

[

db2inst1@win ~

]$ db2 "select

*from

parent"

child parent

---------- ----------

tom lucy

tom jack

jone lucy

jone jack

lucy mary

lucy ben

jack alice

jack jesse

terry alice

terry jesse

philip terry

philip alma

mark terry

mark alma

14 record(s) selected.

要達到這樣的結果,一定要用到表的hash join。下面是我的sql實現:

[

db2inst1@win ~

]$ db2 "select u.child grandchild, b.parent grandparent from (select

*from parent where parent in (select child from parent)) as u ,(select

*from parent where child in (select parent from parent)) as b where u.parent=b.child order

by u.child"

db2的優化器重寫成這樣:

optimized statement:

-------------------

select

distinct q1.child as

"grandchild",

q3.parent

as"grandparent",

q3.child,

q1.parent

from

db2inst1.parent

asq1,

db2inst1.parent

asq2,

db2inst1.parent

asq3,

db2inst1.parent

asq4

where

(q1.parent

= q2.child) and

(q2.child

= q4.parent) and

(q2.child

=q3.child)

order

byq1.child

關於sql要怎麼優化這一方面還有很多不足。。。

DB2 物化查詢表

start db2 物化查詢表mqt materialized query tables 儲存了乙個查詢的結果,當我們查詢相關表時,db2會自動決定是使用原表還是使用物化查詢表。當資料庫中有海量資料時,使用物化查詢表可以極大的提高查詢速度。但是,有一利就有一弊,維護物化查詢表也是相當耗時的。所以,物...

表關聯查詢

一 內連線和外連線 內連線用於返回滿足連線條件的記錄 而外連線則是內連線的擴充套件,它不僅會滿足連線條件的記錄,而且還會返回不滿足連線條件的記錄,語法如下 oracle 1.select table1.column,table2.column from table1 inner left right...

表關聯查詢

一 表關聯查詢 1.表的關聯分兩類 有關係的關聯 無關係的關聯 2.表的有關係的關聯 內關聯 where 指定關聯關係 表1.欄位 表2.欄位 and 表2.欄位 表3.欄位 有關係關聯 通過字段關係,把多張表合併在一起.select s emp.id,first name,name from s ...