Ce face CREATE INDEX
Un index funcționează ca indexul de la finalul unei cărți: în loc să citească tot tabelul, MySQL găsește direct rândurile căutate. Pe tabele mari, diferența poate fi de la secunde la milisecunde.
Pune indexuri pe coloanele folosite des în WHERE, JOIN și ORDER BY. Cheia primară are automat un index. Un UNIQUE INDEX împiedică, în plus, valorile repetate.
Indexurile ocupă spațiu și încetinesc puțin INSERT și UPDATE, deci nu pune index pe fiecare coloană. Cu EXPLAIN în fața unui SELECT vezi dacă MySQL folosește indexul.
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
CREATE TABLE clienti (
id INT AUTO_INCREMENT PRIMARY KEY,
nume VARCHAR(50),
oras VARCHAR(30),
email VARCHAR(100)
);
INSERT INTO clienti (nume, oras, email) VALUES
('Ana Pop', 'Cluj', 'ana@exemplu.ro'),
('Dan Stoica', 'Arad', 'dan@exemplu.ro');
Exemplul 1: Index simplu și index pe două coloane
Indexul pe (oras, nume) ajută la căutările după oraș și la cele după oraș și nume, dar nu la cele doar după nume.
CREATE INDEX idx_oras ON clienti (oras);
CREATE INDEX idx_oras_nume ON clienti (oras, nume);
SELECT nume FROM clienti WHERE oras = 'Cluj';
Rezultat
+---------+
| nume |
+---------+
| Ana Pop |
+---------+
Exemplul 2: Index unic: e-mailuri fără duplicate
CREATE UNIQUE INDEX idx_email ON clienti (email);
INSERT INTO clienti (nume, oras, email) VALUES ('Ana P.', 'Cluj', 'ana@exemplu.ro');
Rezultat în MySQL
ERROR 1062 (23000): Duplicate entry 'ana@exemplu.ro' for key 'clienti.idx_email'
Greșeli frecvente
- Pui index pe fiecare coloană „ca să fie”. Fiecare index încetinește scrierile și ocupă spațiu. Adaugă indexuri pentru interogările lente reale.
- Ai un index pe
email, dar cauți cuWHERE LOWER(email) = '...'sauLIKE '%@exemplu.ro'. Indexul nu poate fi folosit.
Comenzi înrudite
CREATE TABLE: Creează un tabel nou, cu coloanele și tipurile lor de date.ALTER TABLE: Modifică structura unui tabel existent: adaugă, șterge, redenumește sau schimbă coloane.WHERE: Filtrează rândurile: păstrează doar rândurile care îndeplinesc o condiție.