MySQLi - 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ę, jakie kolumny będą używane do wykonywania zapytań SQL i tworzenia jednego lub więcej indeksów na tych kolumnach.

Praktycznie indeksy są również rodzajem tabel, które przechowują klucz podstawowy lub pole indeksu i 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 tabelach posiadających indeksy, gdzie instrukcje SELECT stają się szybkie w tych tabelach. 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_inf przy użyciu NAME_INDEX.

CREATE UNIQUE INDEX NAME_INDEX ON tutorials_inf(name);

Możesz utworzyć prosty indeks w tabeli. Po prostu pomiń słowo kluczowe UNIQUE w zapytaniu, 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 NAME_INDEX ON tutorials_inf (name 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) - Ta instrukcja dodaje KLUCZ PODSTAWOWY, 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ą pojawiać się 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.

Oto przykład dodawania indeksu w istniejącej tabeli.

mysql> ALTER TABLE tutorials_inf ADD INDEX (id);

Możesz usunąć dowolny INDEX, używając klauzuli DROP wraz z poleceniem ALTER. Wypróbuj poniższy przykład, aby usunąć powyższy indeks.

mysql> ALTER TABLE tutorials_inf DROP INDEX (c);

Możesz usunąć dowolny INDEX, używając klauzuli DROP wraz z poleceniem ALTER. Wypróbuj poniższy przykład, aby usunąć powyższy indeks.

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.

Oto przykład 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 tutorials_inf MODIFY id INT NOT NULL;
mysql> ALTER TABLE tutorials_inf ADD PRIMARY KEY (id);

Możesz użyć polecenia ALTER, aby usunąć klucz podstawowy w następujący sposób:

mysql> ALTER TABLE tutorials_inf 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ć polecenia SHOW INDEX, aby wyświetlić listę wszystkich indeksów skojarzonych 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
........