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
- Czy jest dostępny następny rekord spod podanego czasu (dla dowolnego typu)
- Czy jest dostępny następny rekord (dla określonej tablicy typów)
- Czy jest dostępny poprzedni rekord (dla dowolnego typu)
- 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.