Próbuję obliczyć koszt (najbardziej efektywnego) zagnieżdżonego sprzężenia w pętli bloku pod względem NDPR (liczba odczytów na stronie dysku). Załóżmy, że masz zapytanie do formularza:Obliczanie kosztu blokowania zagnieżdżonych połączeń pętlowych
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
gdzie @NO jest podstawiony za kod stanu przy każdym wykonaniu zapytania.
wiem, że można wyprowadzić NPDR z: NPDR(R x S) = |Pages(R)| + Pages(R)/B - 2 . |P ages(S)|
(gdzie mniejsza tabeli stosowane jako zewnętrzna, w celu wytworzenia mniej Odczyty Ergo. R = County, S = MCD).
wiem również, że wielkość page = 2048 bajtów
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
co próbuję dowiedzieć się, w jaki sposób jest „WHERE county.state_code = @NO
” wpływa na mój koszt?
Dzięki za poświęcony czas.
Co jest NDPR (lub NPDR)? Zgaduję, że coś w rodzaju liczby brudnych stron czyta z formuły. – Laurence
Tak, przepraszam. Powinienem to sprecyzować. NPDR = Liczba odczytów dysku na stronie. – JB2