poniedziałek, 24 września 2018

SQLite - INDEXED BY Clause


SQLite - INDEXED BY Clause

Klauzula "INDEXED BY index-nazwa" określa, że ​​nazwany indeks musi być użyty w celu wyszukania wartości z poprzedniej tabeli.
Jeśli nazwa indeksu nie istnieje lub nie może być użyta dla zapytania, wówczas przygotowanie instrukcji SQLite nie powiedzie się.
Klauzula "NOT INDEXED" określa, że ​​przy dostępie do powyższej tabeli nie należy używać indeksu, w tym implikowanych wskaźników tworzonych przez ograniczenia UNIQUE i PRIMARY KEY.
Jednakże klucz INTEGER PRIMARY KEY może być nadal używany do wyszukiwania wpisów, nawet jeśli podano "NOT INDEXED".
Składnia
Poniżej przedstawiono składnię klauzuli INDEXED BY i można jej używać z instrukcją DELETE, UPDATE lub SELECT.
SELECT|DELETE|UPDATE kolumna1, kolumna2...
INDEXED BY (nazwa_indexu)
Nazwa_tabeli
WHERE (warunek);

Przykład
Rozważmy tabelę PRACOWNIK stworzymy indeks i użyjemy go do wykonania operacji INDEXED BY.
sqlite> CREATE INDEX pensja_index ON PRACOWNIK(pensja);
sqlite>
Teraz wybierając dane z tabeli PRACOWNIK można użyć klauzuli INDEXED BY w następujący sposób -
sqlite> SELECT * FROM PRACOWNIK INDEXED BY pensja_index WHERE pensja > 5000;
Spowoduje to uzyskanie następującego wyniku.
id          nazwisko    wiek        adres       pensja
----------  ----------  ----------  ----------  ----------
4           Marek       25          Płock       6500.0
5           Dawid       27          Halinów     8500.0


Brak komentarzy:

Prześlij komentarz