MySQL - INDEKSY

Indeks bazy danych to struktura danych, która poprawia szybkość operacji w tabeli. Indeksy można tworzyć przy użyciu jednej lub więcej kolumn, co stanowi podstawę zarówno do szybkiego losowego wyszukiwania, jak i efektywnego porządkowania dostępu do rekordów.

Podczas tworzenia indeksu należy wziąć pod uwagę, które kolumny posłużą do tworzenia zapytań SQL i utworzenia jednego lub więcej indeksów na tych kolumnach.

W praktyce indeksy są również rodzajem tabel, które przechowują klucz podstawowy lub pole indeksu oraz wskaźnik do każdego rekordu w rzeczywistej tabeli.

Użytkownicy nie widzą indeksów, służą one jedynie do przyspieszania zapytań i będą wykorzystywane przez wyszukiwarkę bazy danych do bardzo szybkiego lokalizowania rekordów.

Instrukcje INSERT i UPDATE zajmują więcej czasu w przypadku tabel z indeksami, podczas gdy instrukcje SELECT w tych tabelach stają się szybkie. Powodem jest to, że podczas wstawiania lub aktualizacji baza danych musi również wstawiać lub aktualizować wartości indeksu.

Prosty i niepowtarzalny indeks

Możesz utworzyć unikalny indeks w tabeli. Unikalny indeks oznacza, że ​​dwa wiersze nie mogą mieć tej samej wartości indeksu. Oto składnia tworzenia indeksu w tabeli.

CREATE UNIQUE INDEX index_name ON table_name ( column1, column2,...);

Do utworzenia indeksu można użyć jednej lub kilku kolumn.

Na przykład możemy utworzyć indeks na tutorials_tbl za pomocą tutorial_author.

CREATE UNIQUE INDEX AUTHOR_INDEX ON tutorials_tbl (tutorial_author)

Możesz utworzyć prosty indeks w tabeli. Po prostu pomińUNIQUEsłowo kluczowe z zapytania, aby utworzyć prosty indeks. Prosty indeks umożliwia zduplikowane wartości w tabeli.

Jeśli chcesz indeksować wartości w kolumnie w porządku malejącym, możesz dodać zarezerwowane słowo DESC po nazwie kolumny.

mysql> CREATE UNIQUE INDEX AUTHOR_INDEX ON tutorials_tbl (tutorial_author DESC)

ALTER polecenie, aby dodać i upuścić INDEKS

Istnieją cztery typy instrukcji dodawania indeksów do tabeli -

  • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list) - To stwierdzenie dodaje PRIMARY KEY, co oznacza, że ​​indeksowane wartości muszą być unikalne i nie mogą mieć wartości NULL.

  • ALTER TABLE tbl_name ADD UNIQUE index_name (column_list) - Ta instrukcja tworzy indeks, dla którego wartości muszą być unikalne (z wyjątkiem wartości NULL, które mogą występować wielokrotnie).

  • ALTER TABLE tbl_name ADD INDEX index_name (column_list) - To dodaje zwykły indeks, w którym dowolna wartość może pojawić się więcej niż raz.

  • ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list) - Tworzy specjalny indeks FULLTEXT, który jest używany do wyszukiwania tekstu.

Poniższy blok kodu jest przykładem dodawania indeksu w istniejącej tabeli.

mysql> ALTER TABLE testalter_tbl ADD INDEX (c);

Możesz usunąć dowolny INDEKS, używając rozszerzenia DROP klauzula wraz z poleceniem ALTER.

Wypróbuj poniższy przykład, aby usunąć powyższy indeks.

mysql> ALTER TABLE testalter_tbl DROP INDEX (c);

Możesz usunąć dowolny INDEX, używając klauzuli DROP wraz z poleceniem ALTER.

ALTER Polecenie, aby dodać i upuścić KLUCZ PODSTAWOWY

Możesz również dodać klucz podstawowy w ten sam sposób. Ale upewnij się, że klucz podstawowy działa na kolumnach, które NIE mają wartości NULL.

Poniższy blok kodu jest przykładem dodawania klucza podstawowego w istniejącej tabeli. Spowoduje to, że najpierw kolumna NIE będzie NULL, a następnie dodamy ją jako klucz podstawowy.

mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;
mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);

Możesz użyć polecenia ALTER, aby upuścić klucz podstawowy w następujący sposób -

mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;

Aby usunąć indeks, który nie jest KLUCZEM PODSTAWOWYM, należy określić nazwę indeksu.

Wyświetlanie informacji INDEKSU

Możesz użyć SHOW INDEXpolecenie, aby wyświetlić wszystkie indeksy powiązane z tabelą. Wyjście w formacie pionowym (określone przez \ G) często jest przydatne w przypadku tej instrukcji, aby uniknąć zawijania długich linii -

Wypróbuj następujący przykład -

mysql> SHOW INDEX FROM table_name\G
........