środa, 19 września 2018

MySQL - indeksy

MySQL - indeksy

Indeks bazy danych to struktura danych, która poprawia szybkość operacji w tabeli. Indeksy mogą być tworzone przy użyciu jednej lub więcej kolumn, co stanowi podstawę zarówno szybkiego wyszukiwania losowego, jak i efektywnego porządkowania dostępu do rekordów.
Podczas tworzenia indeksu należy wziąć pod uwagę, które kolumny będą używane do tworzenia zapytań SQL i tworzenia jednego lub większej liczby indeksów w tych kolumnach.
Praktycznie indeksy są także rodzajem tabel, które zachowują klucz podstawowy lub pole indeksu oraz wskaźnik do każdego rekordu do rzeczywistej tabeli.
Użytkownicy nie widzą indeksów, są po prostu przyzwyczajeni do przyśpieszania zapytań i będą używane przez Wyszukiwarkę baz danych do szybkiego znajdowania rekordów.
Instrukcje INSERT i UPDATE zajmują więcej czasu w tabelach posiadających indeksy, podczas gdy 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 unikalny 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 do utworzenia indeksu w tabeli.
CREATE UNIQUE INDEX nazwa_indexu
ON nazwa_tabeli ( kolumna1, kolumna2,...);

Możesz użyć jednej lub więcej kolumn, aby utworzyć indeks.
Na przykład możemy utworzyć indeks na kurs_tbl przy pomocy kurs_author.
CREATE UNIQUE INDEX AUTHOR_INDEX
ON kurs_tbl (kurs_author)

Możesz utworzyć prosty indeks w tabeli. Po prostu pomiń słowo kluczowe UNIQUE 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 kurs_tbl (kurs_author DESC)

Polecenie ALTER, aby dodać i usunąć INDEX

Istnieją cztery typy instrukcji dodawania indeksów do tabeli
·      ALTER TABLE tbl_nazwa 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_nazwa ADD UNIQUE index_nazwa (column_list) − Ta instrukcja tworzy indeks, dla którego wartości muszą być unikalne (z wyjątkiem wartości NULL, które mogą pojawić się wiele razy).
·      ALTER TABLE tbl_nazwa ADD INDEX index_nazwa (column_list)Dodaje zwykły indeks, w którym każda wartość może pojawić się więcej niż jeden raz.
·      ALTER TABLE tbl_nazwa ADD FULLTEXT index_nazwa (column_list) − Tworzy specjalny indeks FULLTEXT, który służy do wyszukiwania tekstu.
Poniższy blok kodu jest przykładem do dodania indeksu do istniejącej tabeli.
mysql> ALTER TABLE test_tbl ADD 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.
mysql> ALTER TABLE test_tbl DROP INDEX (c);

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

Polecenie ALTER do dodawania i usuwania PRIMARY KEY

 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 są NULL.
Poniższy blok kodu jest przykładem, aby dodać klucz podstawowy do istniejącej tabeli. Spowoduje to najpierw utworzenie kolumny NOT NULL, a następnie dodanie jej jako klucza podstawowego.
mysql> ALTER TABLE test_tbl MODIFY j INT NOT NULL;
mysql> ALTER TABLE test_tbl ADD PRIMARY KEY (j);

Możesz użyć polecenia ALTER, aby usunąć klucz podstawowy w następujący sposób
mysql> ALTER TABLE test_tbl DROP PRIMARY KEY;

Aby usunąć indeks, który nie jest kluczem podstawowym, musisz podać nazwę indeksu.

Wyświetlanie informacji o INDEKSIE

Możesz użyć polecenia SHOW INDEX, aby wyświetlić wszystkie indeksy powiązane z tabelą. Wyjściowy format w formacie pionowym (określony przez \G) jest często przydatny w przypadku tej instrukcji, aby uniknąć zawijania długiego wiersza -
Wypróbuj następujący przykład  −
mysql> SHOW INDEX FROM nazwa_tabeli\G
........



Brak komentarzy:

Prześlij komentarz