2017-01-30 61 views
1

我一直在試圖解決以下問題的最後幾天。DBMS:關係代數執行計劃成本計算

假設我們有以下兩張表。

電影(ID '標題,國家,Production_Date)

演員(ID',名稱,類型,國籍)

演員(Actor_ID」,Film_ID ',角色)

鑑於信息:

膜保持N(膜)= 50.000記錄,R(膜)= 40bytes,順序組織,在PK索引

演員持有N(演員)= 200.000記錄R(演員)= 80bytes,堆組織上PK索引

角色保持N(鑄)= 100.000記錄,R(澆鑄)= 25個字節,堆組織,沒有索引

執行樹和關係表達式執行計劃是在下面的圖片:

enter image description here

對於下級加盟模具之間&電影我計算如下:

塊嵌套循環連接:BCAST X Bfilm

指數嵌套循環連接:BCAST + Ncast X Cfilm

我保持INLJ給出的最小值。

問:

現在我該怎麼計算連接表的規模和新的R這是對新加入表中記錄的大小,以進行及計算上一級加盟在已經連接的表格和表格演員之間計算出連接操作所需的成本B之後?

回答

1

我假設你想對FILM.ID = CAST.FILM_ID做一個自然連接,而CAST.FILM_ID是一個引用FILM.ID的外鍵。

1)一列的大小:

甲形式

[FILM_ID, TITLE, COUNTRY, PRODUCTION_DATE, ACTOR_ID, ROLE]. 

的元組加入的膜和流延的結果因此,行大小應該是這樣的

R(FILM JOIN CAST) = R(FILM) + R(CAST) - R(FILM_ID) 

因爲FILM_ID是唯一被共享的列。

2)行數:

N(FILM JOIN CAST) = N(CAST) 

,因爲在電影中的一行在CAST每一行。

+0

這就是我的想法,但我怎麼能找出R(FILM_ID)爲了計算R(電影聯合鑄造)? – HelloIT

+0

理論上只依賴CAST.FILM_ID列的數據類型。一個4字節的整數......等等。 VARBINARY或VARCHAR很難預測。可能會有一些開銷,實施明智。所以,這取決於你的RDBMS,你的模式和你的數據。 – nCessity