NDPR (ディスク ページ読み取り回数) に関して (最も効率的な) ブロック ネスト ループ結合のコストを計算しようとしています。次の形式のクエリがあるとします。
SELECT COUNT(*)
FROM county JOIN mcd
ON count.state_code = mcd.state_code
AND county.fips_code = mcd.fips_code
WHERE county.state_code = @NO
ここで、@NO は、クエリを実行するたびに状態コードに置き換えられます。
以下を使用して NPDR を導出できることを知っています。NPDR(R x S) = |Pages(R)| + Pages(R) / B - 2 . |P ages(S)|
(ページ読み取りを少なくするために、小さいテーブルが外側として使用されます。エルゴ: R = 郡、S = mcd)。
ページサイズ= 2048バイトであることも知っています
Pointer = 8 byte
Num. rows in mcd table = 35298
Num. rows in county table = 3141
Free memory buffer pages B = 100
Pages(X) = (rowsize)(numrows) / pagesize
私が理解しようとしているのは、「WHERE county.state_code = @NO
」がコストにどのように影響するかということです。
御時間ありがとうございます。