Witam, mam pytanie odnoście optymalizacji zapytania

Mam tabele (w uproszczonej strukturze):

ID		    INTEGER NN PK
OBJECT_ID    INTEGER NN FK
TYPE_ID        INTEGER NN 
TIME              TIMESTAMP NN

tabela przechowuje dużą ilość rekordów.

Wyciągam wiersz spod podanego czasu dla danego id obiektu (w aplikacji mam przyciski pierwszy, ostatni, następny, itd).

Chodzi mi o sprawdzenie czy

  1. Czy jest dostępny następny rekord spod podanego czasu (dla dowolnego typu)
  2. Czy jest dostępny następny rekord (dla określonej tablicy typów)
  3. Czy jest dostępny poprzedni rekord (dla dowolnego typu)
  4. Czy jest dostępny poprzedni rekord (dla określonej tablicy typów)

Obecnie wygląda to tak (na przykładzie obsługi przycisku "następny"):

1. Wyciągam rekordy z limitem 2 > od TIME
2. Sprawdzam czy ilość rekordów >= 1
2.1 JEŻELI TAK (mam żądany rekord) Sprawdzam czy istnieją 2 rekordy
	Jeżeli istnieją 2 rekordy wiem że jest następny rekord dla dowolnego typu
        Sprawdzam czy 2 rekord spełnia warunek dotyczący określonej tablicy typów
		TAK (wiem że istnieje następny rekord dla określonej tablicy typów)
                NIE Wyciągam rekordy > od TIME (różne od bieżącego) i spełniające warunki dot. typu z  
                        limitem 1
			TAK (wiem że istnieje następny rekord dla określonej tablic typów)
                        NIE (brak następnego rekordu dla określonej tablicy typów)

2.2 JEŻELI NIE MA REKORDÓW (nie ma następnego rekordu (dla dowolnego i określonego typu).

Następnie analogicznie sprawdzam w drugą stronę.

Czy da się ograniczyć ilość zapytań ?

Pozdrawiam.