Ich versuche, die Kosten für die (effizienteste) Block Nested Loop Join in Bezug auf NDPR (Anzahl der Datenträger Seite liest) zu berechnen. Angenommen, Sie haben eine Abfrage der Form:Berechnung der Kosten von Block Nested Loop Joins
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
wo @NO für einen Zustandscode auf jeder Ausführung der Abfrage ersetzt wird.
Ich weiß, dass ich die NPDR ableiten kann mit: NPDR(R x S) = |Pages(R)| + Pages(R)/B - 2 . |P ages(S)|
(wo die kleinere Tabelle als äußere verwendet wird, um weniger Seite zu erzeugen, liest Ergo:. R = Kreis, S = mcd).
Ich weiß auch, dass die Seitengröße = 2048 Bytes
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
Was ich versuche, ist, herauszufinden, wie die „WHERE county.state_code = @NO
“ meine Kosten auswirkt?
Danke für Ihre Zeit.
Was ist NDPR (oder NPDR)? Ich vermute etwas wie die Anzahl der schmutzigen Seiten liest aus der Formel. – Laurence
Ja, tut mir leid. Ich hätte das spezifizieren sollen. NPDR = Anzahl der Lesevorgänge auf der Seite. – JB2