1. Czym są indeksy w MySQL?
Indeksy w MySQL to specjalne struktury danych, które poprawiają wydajność operacji wyszukiwania w tabelach. Działają podobnie do indeksów w książkach – pozwalają na szybkie odnalezienie danych bez konieczności przeszukiwania całej tabeli.
Zalety indeksów:
- Przyspieszają operacje
SELECTpoprzez szybsze wyszukiwanie danych - Zwiększają wydajność operacji
JOINw zapytaniach - Optymalizują filtrowanie danych w
WHERE,ORDER BYiGROUP BY
Wady indeksów:
- Zajmują dodatkową przestrzeń w bazie danych
- Mogą spowolnić operacje
INSERT,UPDATEiDELETE, ponieważ MySQL musi aktualizować indeksy przy każdej zmianie danych
2. Rodzaje indeksów w MySQL
Indeks PRIMARY KEY (klucz główny)
Każda tabela może mieć tylko jeden klucz główny (PRIMARY KEY). Domyślnie jest to indeks unikalny.
CREATE TABLE klienci (
id INT AUTO_INCREMENT PRIMARY KEY,
imie VARCHAR(50),
nazwisko VARCHAR(50),
email VARCHAR(100)
);
Indeks UNIQUE (indeks unikalny)
Zapewnia, że wartości w kolumnie są unikalne.
CREATE TABLE produkty (
id INT AUTO_INCREMENT PRIMARY KEY,
nazwa VARCHAR(100),
kod_produktu VARCHAR(50) UNIQUE
);
Indeks STANDARDOWY (INDEX)
Przyspiesza wyszukiwanie, ale nie wymusza unikalności.
CREATE INDEX idx_nazwisko ON klienci(nazwisko);
Indeks WIELOKOLUMNOWY (Composite Index)
Indeks na więcej niż jednej kolumnie – MySQL może go używać do optymalizacji zapytań.
CREATE INDEX idx_nazwisko_imie ON klienci(nazwisko, imie);
Indeks FULLTEXT (dla wyszukiwania tekstowego)
Służy do szybkiego wyszukiwania w dużych zbiorach tekstu.
CREATE TABLE artykuly (
id INT AUTO_INCREMENT PRIMARY KEY,
tytul VARCHAR(255),
tresc TEXT,
FULLTEXT (tytul, tresc)
);
3. Przykłady użycia indeksów
Tworzenie indeksu po utworzeniu tabeli
Jeśli tabela już istnieje, można dodać indeks:
CREATE INDEX idx_email ON klienci(email);
Usuwanie indeksu
DROP INDEX idx_email ON klienci;
Sprawdzanie indeksów w tabeli
SHOW INDEX FROM klienci;
4. Ćwiczenia dla uczniów
Ćwiczenie 1: Tworzenie indeksu PRIMARY KEY
Stwórz tabelę pracownicy, w której klucz główny będzie oparty na kolumnie id.
Ćwiczenie 2: Tworzenie indeksu UNIQUE
Dodaj indeks unikalny do tabeli pracownicy, tak aby numer telefonu (telefon) nie mógł się powtarzać.
Ćwiczenie 3: Tworzenie indeksu dla wyszukiwania
Stwórz indeks na kolumnie nazwisko w tabeli pracownicy, aby przyspieszyć wyszukiwanie według nazwiska.
Ćwiczenie 4: Tworzenie indeksu FULLTEXT
Utwórz tabelę posty z kolumnami tytul i tresc, a następnie dodaj indeks FULLTEXT do tych kolumn.
Po tej lekcji uczniowie powinni umieć:
- Tworzyć różne rodzaje indeksów
- Optymalizować wyszukiwanie w MySQL
- Wykorzystywać indeksy w praktycznych scenariuszach