私は最後の日に、次の質問に対する解決策を用意しています。DBMS:リレーショナル代数実行計画コスト計算
次の2つの表があるとします。
フィルム(ID 'タイトル、国、Production_Date)
俳優(ID'、名前、ジャンル、国籍)
キャストFilm_ID(ACTOR_ID」、 '、役割)
与えられた情報:
フィルムがN(フィルム)= 50.000レコード、R(フィルム)=の40bytes、シーケンシャル編成を保持し、インデックスPKに
俳優= 200.000レコードが(アクター)=の80bytes、ヒープが組織R N(アクター)を保持します、PKのインデックスは
キャストN(キャスト)= 100.000レコード、R(キャスト)= 25バイト、ヒープ組織化、無INDEXES
保持していない実行プランの実行ツリーとの関係式は、次の画像であります:
低いレベルのために
は、キャストの間、私は以下の計算だ&フィルム参加:ブロックネステッド・ループへの参加:BCAST X Bfilm
インデックスネステッド・ループ結合:+ Ncastは Cfilm
xはBCAST私はINLJで与えられる最小の値を保持しています。
質問:
今、私が参加し、上位レベルを続行し、計算するために、結合テーブルのサイズと新しい結合テーブル上のレコードのサイズである新しいRを計算することができますかすでに結合されたテーブルとテーブルアクターとの間で、コストBを計算した後に結合操作がかかるでしょうか?
これは私が考えていたものですが、R(FILM_ID)を計算してR(FILM JOIN CAST)を計算するにはどうすればよいですか? – HelloIT
理論的には、列CAST.FILM_IDのデータ型にのみ依存します。 4バイトの整数...など。 VARBINARYまたはVARCHARは予測しにくい。実装上はオーバーヘッドがあります。したがって、それは実際にRDBMS、スキーマ、およびデータに依存します。 – nCessity