免費開始練習
高考申論題 115年 [資訊處理] 資料庫應用

第 四 題

📖 題組:
某機構資料庫有以下兩張 E 與 C 資料表,並存在其關聯:  E(SID, CID, Grade):共 60000 筆資料,每個區塊(Block)存 50 筆資料。  C(CID, Name, Credit):共 600 筆資料,每個區塊(Block)存 30 筆資料。 假設該機構系統可用的緩衝區(Buffer)M 共 22 頁,並執行下面 SQL 語法: SELECT E.SID, C.Name, E.Grade FROM E JOIN C ON E.CID = C.CID 目前已知關聯式資料庫中,常見的 Join 演算法有三種,即 Simple Nested Loop Join (SNLJ)、Block Nested Loop Join (BNLJ)與 Hash Join,其 I/O 成本分別計算如下: | Join 演算法 | I/O 成本公式 | 說明 | |---|---|---| | SNLJ | B(R) + \|R\| × B(S) | 對 R 每一筆 Tuple,掃描整個 S | | BNLJ | B(R) + ⌈B(R)/(M-2)⌉ × B(S) | 以 Block 為單位分批載入 R,每批掃描一次 S;M-2頁給外層,1 頁給內層,1 頁給輸出 | | Hash Join | 3 × (B(R) + B(S)) | 分割階段讀寫各一次,探測階段再讀一次 | 演算法內符號說明如下:B(R)代表資料表 R 的區塊(Block)數,也就是以 R 作為 JOIN 運算的驅動表(Driving Table / Outer Table);|R|代表資料表 R 的資料筆數;M 代表可用緩衝區(Buffer)頁數;S 為要計算的資料表。 請回答下面問題,並計算下列各演算法的 I/O 成本(需列計算過程):
📝 此題為申論題,共 4 小題

小題 (四)

綜合比較上述三種結果,在本題情境下應選擇那種演算法?說明原因。(10 分)

思路引導 VIP

此題為判斷題,需整合前三小題的計算結果進行論證。

  1. 先列出前三題結果以供對比:SNLJ = 1,201,200;BNLJ = 1,220;Hash Join = 3,660。
🤖
AI 詳解
AI 專屬家教

【考點分析】 本題測驗考生對不同 Join 演算法在特定資料量與緩衝區條件下的適用情境與效能評估,需具備剖析成本差異背後成因的能力。 【理論/法規依據】

小題 (一)

使用 SNLJ 法,以資料表 E 為驅動表。(5 分)

思路引導 VIP

看到本題,首要是從題目敘述中計算出公式所需的基本參數,然後代入公式:

  1. 先計算兩個資料表的區塊數 (Block 數):
🤖
AI 詳解
AI 專屬家教

【考點分析】 本題測驗對於 Simple Nested Loop Join (SNLJ) 演算法之 I/O 成本計算能力,重點在於先計算出資料表的區塊數(Blocks)並正確代入公式。 【理論/法規依據】

小題 (二)

使用 BNLJ 法,以資料表 C 為驅動表。(5 分)

思路引導 VIP

接著處理 BNLJ,並注意題目更改了驅動表:

  1. 驅動表 R = C,被驅動表 S = E。
🤖
AI 詳解
AI 專屬家教

【考點分析】 本題測驗 Block Nested Loop Join (BNLJ) 的 I/O 成本計算,並檢視考生對無條件進位符號(Ceiling 函數)與緩衝區(Buffer)利用機制的理解。 【理論/法規依據】

小題 (三)

使用 Hash Join 法(假設分割後各 Partition 可完整放入記憶體)。(5 分)

思路引導 VIP

本題只需將資料套用 Hash Join 成本公式。

  1. 找出公式:3 × (B(R) + B(S))
🤖
AI 詳解
AI 專屬家教

【考點分析】 本題測驗 Hash Join 演算法的基礎 I/O 成本計算。 【理論/法規依據】

🏷️ 相關主題

關聯式資料庫設計與SQL查詢語言
查看更多「[資訊處理] 資料庫應用」的主題分類考古題