Temat: Tworzenie indeksów w bazie danych SQL.
Indeksy, w dużym uproszczeniu, powodują przyśpieszenie operacji wyszukiwania wykonywanych na bardzo dużych tabelach.
Jeśli Twoje tabele mają więcej niż 100 rekordów zastanów się nad założeniem odpowiednich indeksów. W indeksach system bazy danych zapisuje wewnętrzne przyporządkowania bloków danych do odpowiednich rekordów, dzięki czemu operacja wyszukiwania sprowadza się do przeszukania indeksu, a nie całej tabeli.
Indeks należy zakładać dla pól, według których najczęściej jest wykonywane wyszukiwanie lub sortowanie. Indeksy można tworzyć na etapie projektowania tabeli.
Ćw.1 – Indeks dla pojedynczej kolumny w definicji tabeli
Uaktywnij bazę danych nazwisko_firma. Utwórz w niej nową tabelę test1 zawierającą dwie kolumny:
pierwszą (id) typu INTEGER, będącą kluczem podstawowym oraz drugą (nazwa), typu VARCHAR(20), która ma być indeksowana.
CREATE TABLE test1 (
id INT PRIMARY KEY, nazwa VARCHAR(20), INDEX nazwa_idx (nazwa) );
Wyświetl strukturę utworzonej tabeli.
Ćw.2 – Kilka indeksów w jednej tabeli
W bazie danych nazwisko_firma utwórz nową tabelę test2 w taki sposób, aby wszystkie pola były indeksowane.
CREATE TABLE test2 (
id INT PRIMARY KEY, imie VARCHAR(20), nazwisko VARCHAR(30), INDEX id_idx (id) INDEX imie_idx (imie),
INDEX nazwisko_idx (nazwisko) );
Wyświetl strukturę utworzonej tabeli.
Ćw.3 – Indeks złożony z kilku kolumn w definicji tabeli
W bazie danych nazwisko_firma utwórz nową tabelę test3 zawierającą 4 kolumny: id, imie, nazwisko, pesel. Kolumny imie i nazwisko powinny tworzyć jeden indeks.
CREATE TABLE test3 (
id INT PRIMARY KEY, imie VARCHAR(20), nazwisko VARCHAR(30), pesel CHAR(11),
INDEX imie_ nazwisko_idx (imie, nazwisko) );
Wyświetl strukturę utworzonej tabeli.
Ćw.4 – Wyświetlanie indeksów związanych z wybraną tabelą
Wyświetl informacje o indeksach zawartych w tabelach: test1, test2 i test3 różnymi sposobami.
Aby wyświetlić indeksy powiązane z tabelą w bazie należy użyć polecenia:
SHOW INDEX FROM nazwa_tabeli FROM nazwa_bazy_danych;
lub
SHOW INDEX FROM nazwa_bazy_danych.nazwa_tabeli ;
Jeżeli baza nazwisko_firma jest bieżącą bazą, można też użyć formy skróconej:
SHOW INDEX FROM nazwa_tabeli;
np. SHOW INDEX FROM test1;
Ćw.5 – Usuwanie indeksów
Usuń wszystkie indeksy zawarte w tabelach: test1, test2 i test3 różnymi sposobami.
Indeksy można usnąć za pomocą następującej instrukcji:
DROP INDEX nazwa_indeksu ON nazwa_bazy_danych.nazwa_tabeli;
Jeżeli baza nazwisko_firma jest bieżącą bazą, można zastosować wersje skrócone zawierające tylko nazwę tabeli, bez określania bazy:
DROP INDEX nazwa_indeksu ON nazwa_tabeli;
np. DROP INDEX id_idx ON test3;
Wyświetl informacje o indeksach zawartych w tabelach: test1, test2 i test3.
Ćw.6 – Dodawanie indeksu dla pojedynczej kolumny Dodaj do tabeli test1 indeks związany z kolumną id.
CREATE INDEX nazwa_indeksu ON nazwa_tabeli (nazwa_kolumny);
Wyświetl informacje o indeksach zawartych w tabeli test1.
Ćw.7 – Dodawanie kilku indeksów do jednej tabeli
Dodaj do tabeli test2 indeksy związane z kolumnami imie i nazwisko. Aby wykonać to ćwiczenie, należy użyć dwóch instrukcji.
CREATE INDEX nazwa_indeksu ON nazwa_tabeli (nazwa_kolumny);
Wyświetl informacje o indeksach zawartych w tabeli test2.
Ćw.9 – Dodawanie indeksu złożonego z kilku kolumn
Dodaj do tabeli test3 indeks złożony z kolumn nazwisko i pesel. Aby wykonać to ćwiczenie, należy użyć instrukcji.
CREATE INDEX nazwa_indeksu ON nazwa_tabeli (kolumna1, kolumna2,… kolumnaN);
np. CREATE INDEX indeks1 ON test3 (nazwisko, pesel);
Wyświetl informacje o indeksach zawartych w tabelach: test1, test2 i test3.
Ćw.10
Poproś nauczyciela w celu sprawdzenia wykonanych ćwiczeń.