SQLite - indeksy

Indeksy to specjalne tabele wyszukiwania, których mechanizm wyszukiwania bazy danych może używać do przyspieszenia pobierania danych. Mówiąc najprościej, plikindexjest wskaźnikiem do danych w tabeli. Indeks w bazie danych jest bardzo podobny do indeksu na końcu książki.

Na przykład, jeśli chcesz odnieść się do wszystkich stron w książce, które omawiają określony temat, najpierw odwołaj się do indeksu, który zawiera listę wszystkich tematów w porządku alfabetycznym, a następnie odsyła się do jednego lub kilku określonych numerów stron.

Indeks pomaga przyspieszyć zapytania SELECT i klauzule WHERE, ale spowalnia wprowadzanie danych dzięki instrukcjom UPDATE i INSERT. Indeksy można tworzyć lub usuwać bez wpływu na dane.

Tworzenie indeksu obejmuje instrukcję CREATE INDEX, która pozwala nazwać indeks, określić tabelę i kolumnę lub kolumny do indeksowania, a także wskazać, czy indeks jest w porządku rosnącym czy malejącym.

Indeksy mogą być również unikalne, podobnie jak ograniczenie UNIQUE, ponieważ indeks zapobiega zduplikowanym wpisom 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 index_name ON table_name;

Indeksy jednokolumnowe

Indeks jednokolumnowy to taki, który jest tworzony na podstawie tylko jednej kolumny tabeli. Podstawowa składnia jest następująca -

CREATE INDEX index_name
ON table_name (column_name);

Unikalne indeksy

Unikalne indeksy służą nie tylko wydajności, ale także integralności danych. Unikalny indeks nie pozwala na wstawienie do tabeli zduplikowanych wartości. Podstawowa składnia jest następująca -

CREATE UNIQUE INDEX index_name
on table_name (column_name);

Indeksy złożone

Indeks złożony to indeks dwóch lub więcej kolumn tabeli. Podstawowa składnia jest następująca -

CREATE INDEX index_name
on table_name (column1, column2);

Niezależnie od tego, czy chcesz utworzyć indeks jednokolumnowy, czy indeks złożony, weź pod uwagę kolumny, których możesz często używać w klauzuli WHERE zapytania jako warunki filtru.

W przypadku użycia tylko jednej kolumny, należy wybrać indeks jednokolumnowy. Jeśli w klauzuli WHERE są często używane dwie lub więcej kolumn jako filtry, najlepszym wyborem będzie indeks złożony.

Niejawne indeksy

Niejawne indeksy to indeksy, które są automatycznie tworzone przez serwer bazy danych podczas tworzenia obiektu. Indeksy są tworzone automatycznie dla ograniczeń klucza podstawowego i ograniczeń unikalności.

Example

Poniżej znajduje się przykład, w którym utworzymy indeks w tabeli FIRMA dla kolumny wynagrodzenia -

sqlite> CREATE INDEX salary_index ON COMPANY (salary);

Teraz wypiszmy wszystkie indeksy dostępne w tabeli COMPANY za pomocą .indices polecenie w następujący sposób -

sqlite> .indices COMPANY

Daje to następujący wynik, gdzie sqlite_autoindex_COMPANY_1 jest niejawnym indeksem, który został utworzony podczas tworzenia samej tabeli.

salary_index
sqlite_autoindex_COMPANY_1

Możesz wyświetlić listę wszystkich 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ą SQLite DROPKomenda. Należy zachować ostrożność podczas usuwania indeksu, ponieważ wydajność może zostać spowolniona lub poprawiona.

Oto podstawowa składnia jest następująca -

DROP INDEX index_name;

Możesz użyć poniższej instrukcji, aby usunąć wcześniej utworzony indeks.

sqlite> DROP INDEX salary_index;

Kiedy należy unikać indeksów?

Chociaż indeksy mają na celu zwiększenie wydajności bazy danych, są sytuacje, w których należy ich unikać. Poniższe wytyczne wskazują, kiedy należy ponownie rozważyć użycie indeksu.

Indeksów nie należy używać w -

  • Małe stoliki.
  • Tabele, które mają częste, duże operacje aktualizacji lub wstawiania.
  • Kolumny zawierające dużą liczbę wartości NULL.
  • Kolumny, którymi często się manipuluje.