BD-2st-1.2-w13.tresc-1.1-Slajd11
Szacowanie rozmiarów i współczynnik selektywności (2)
Oszacowanie wyniku wykonania zapytania, przedstawionego na poprzednim slajdzie, z którym związany jest zbiór predykatów selekcji (term1, term2, ..., term k), jest zdefiniowane następującym wzorem:
rozmiar wyniku jest równy maksymalnej liczbie krotek * iloczyn wszystkich współczynników selektywności związanych z poszczególnymi predykatami selekcji. Podane powyżej oszacowanie wyniku zapytania zakłada, że predykaty są niezależne, co najczęściej nie jest spełnione w praktyce, ale istotnie ułatwia oszacowanie wyniku.
W jaki sposób obliczana jest wartość współczynnika selektywności dla danego predykatu?
Wartości współczynnika selektywności, dla poszczególnych typów predykatów przedstawiono na slajdzie. Przykładowo, jeżeli predykat term posiada postać „atrybut = wartość”, wówczas wartość współczynnika selektywności wynosi 1/val(atrybut), gdzie val(atrybut) oznacza liczbę różnych wartości danego atrybutu. Załóżmy, że predykat posiada postać „miasto = ‘Konin’ i val(miasto) = 5 (atrybut miasto przyjmuje 5 różnych wartości). Wówczas, szacunkowa liczba krotek spełniających dany predykat wynosi 1/5 liczby krotek. Przykładowo, jeżeli dana relacja Pracownicy posiada 1000 krotek i zapytanie do relacji jest sformułowane następująco:
Select nazwisko
From Pracownicy
Where miasto=’Konin’
Wówczas optymalizator szacuje, że w wyniku zapytania otrzymamy 1/5 * 1000 = 200 krotek.
Oczywiście, ze względu na rozkład wartości atrybutu miasto , podane oszacowanie może się istotnie różnić od rzeczywistego rozmiaru wyniku.