poniedziałek, 24 września 2018

SQLite - indeksy


SQLite - indeksy

Indeksy są specjalnymi tablicami wyszukiwania, których silnik bazy danych może użyć do przyspieszenia pobierania danych. Po prostu, indeks jest wskaźnikiem do danych w tabeli. Indeks w bazie danych jest bardzo podobny do indeksu na odwrocie książki.
Na przykład, jeśli chcesz odwołać się do wszystkich stron w książce omawiającej dany temat, najpierw odwołaj się do indeksu, który zawiera listę wszystkich tematów alfabetycznie, a następnie odnoszą się do jednego lub więcej określonych numerów stron.
Indeks pomaga przyspieszyć zapytania SELECT i klauzule WHERE, ale spowalnia wprowadzanie danych za pomocą instrukcji UPDATE i INSERT. Indeksy mogą być tworzone lub usuwane bez wpływu na dane.
Utworzenie indeksu obejmuje instrukcję CREATE INDEX, która pozwala nazwać indeks, określić tabelę i kolumnę lub kolumny do indeksowania oraz wskazać, czy indeks jest w porządku rosnącym, czy malejącym.
Indeksy mogą być również unikalne, podobne do ograniczenia UNIQUE, ponieważ indeks zapobiega duplikowaniu wpisów w kolumnie lub kombinacji kolumn, w których znajduje się indeks.

Polecenie CREATE INDEX

Poniżej znajduje się podstawowa składnia CREATE INDEX.
CREATE INDEX nazwa_indeksu ON nazwa_tabeli;

Indeksy jedno-kolumnowe

Indeks jednokolumnowy to taki, który jest tworzony na podstawie tylko jednej kolumny tabeli. Podstawowa składnia jest następująca:
CREATE INDEX nazwa_indeksu
ON nazwa_tabeli (nazwa_kolumny);


Unikalne indeksy

Unikalne indeksy są używane nie tylko do wydajności, ale także do integralności danych. Unikalny indeks nie pozwala na wstawianie żadnych duplikatów do tabeli. Podstawowa składnia jest następująca:
CREATE UNIQUE INDEX nazwa_indeksu
on nazwa_tabeli (nazwa_kolumny);

Indeksy złożone

Indeks złożony to indeks na dwóch lub więcej kolumnach tabeli. Podstawowa składnia jest następująca:
CREATE INDEX nazwa_indeksu
on nazwa_tabeli (kolumna1, kolumna2);
Niezależnie od tego, czy utworzymy indeks jednokolumnowy, czy indeks złożony, należy wziąć pod uwagę kolumny (kolumny), których można bardzo często używać w klauzuli WHERE kwerendy jako warunków filtrowania.
Jeśli istnieje tylko jedna kolumna, wybór powinien stanowić indeks jednokolumnowy. Jeśli w klauzuli WHERE jako filtry znajdują się dwie lub więcej kolumn, najlepszym wyborem będzie indeks złożony.

Implicit Indexes

Implicit indexes to indeksy tworzone automatycznie przez serwer bazy danych podczas tworzenia obiektu. Indeksy są tworzone automatycznie dla ograniczeń klucza podstawowego i unikalnych ograniczeń.
Przykład
Poniżej znajduje się przykład, w którym utworzymy indeks w tabeli PRACOWNIK dla kolumny PENSJA -
sqlite> CREATE INDEX pensja_index ON PRACOWNIK (pensja);
Teraz, wypiszmy listę wszystkich indeksów dostępnych w tabeli PRACOWNIK, używając polecenia .indices w następujący sposób:
sqlite> .indices PRACOWNIK
Spowoduje to wygenerowanie następującego wyniku, w którym sqlite_autoindex_PRACOWNIK_1 jest niejawnym indeksem utworzonym podczas tworzenia samej tabeli.
pensja_index                       sqlite_autoindex_pracownik_1
sqlite_autoindex_dzial_1
Możesz wyświetlić całą bazę danych indeksów w następujący sposób:
sqlite> SELECT * FROM sqlite_master WHERE type = 'index';

Polecenie DROP INDEX

Indeks można usunąć za pomocą polecenia SQLite DROP. Podczas usuwania indeksu należy zachować ostrożność, ponieważ wydajność może zostać spowolniona lub poprawiona.
Poniżej przedstawiono podstawową składnię:
DROP INDEX nazwa_indexu;
Możesz użyć poniższej instrukcji, aby usunąć wcześniej utworzony indeks.
sqlite> DROP INDEX pensja_index;

Kiedy należy unikać indeksów?

Chociaż indeksy mają na celu zwiększenie wydajności bazy danych, są chwile, kiedy należy ich unikać. Poniższe wytyczne wskazują, kiedy należy ponownie rozważyć użycie indeksu.
Indeksy nie powinny być używane w -
  • Małych tabelach.
  • Tabele z częstymi, dużymi aktualizacjami wsadowymi lub operacjami wstawiania.
  • Kolumny zawierające dużą liczbę wartości NULL.
  • Kolumny, które często są manipulowane.

Brak komentarzy:

Prześlij komentarz