Mieszane kursory

Kursor mieszany to kombinacja kursora sterowanego kluczami i kursora dynamicznego. Jest używany, gdy zestaw wyników jest zbyt duży, aby rozsądnie zapisać klucze dla całego zestawu wyników. Mieszane kursory są implementowane przez utworzenie zestawu kluczy, który jest mniejszy niż cały zbiór wyników, ale większy niż zestaw wierszy.

Tak długo, jak aplikacja przewija się w obrębie zestawu kluczy, zachowanie jest sterowane zestawem kluczy. Gdy aplikacja przewija się poza zestaw kluczy, zachowanie jest dynamiczne: kursor pobiera żądane wiersze i tworzy nowy zestaw kluczy. Po utworzeniu nowego zestawu kluczy, zachowanie ponownie staje się zależne od tego zestawu kluczy.

Załóżmy na przykład, że zestaw wyników zawiera 1000 wierszy i używa kursora mieszanego z rozmiarem zestawu kluczy 100 i rozmiarem zestawu wierszy 10. Po pobraniu pierwszego zestawu wierszy kursor tworzy zestaw kluczy składający się z kluczy dla pierwszych 100 wierszy. Następnie zwraca pierwsze 10 wierszy zgodnie z żądaniem.

Teraz załóżmy, że inna aplikacja usuwa wiersze 11 i 101. Jeśli kursor próbuje pobrać wiersz 11, napotka lukę, ponieważ zawiera on klucz dla tego wiersza, ale nie istnieje wiersz; jest to zachowanie oparte na zestawie kluczy. Jeśli kursor próbuje pobrać wiersz 101, kursor nie wykryje braku wiersza, ponieważ nie ma klucza dla wiersza. Zamiast tego pobierze to, co było wcześniej wierszem 102. Jest to dynamiczne zachowanie kursora.

Mieszany kursor jest odpowiednikiem kursora opartego na zestawie kluczy, gdy rozmiar zestawu kluczy jest równy rozmiarowi zestawu wyników. Mieszany kursor jest odpowiednikiem kursora dynamicznego, gdy rozmiar zestawu kluczy jest równy 1.