Aprobat de cei mai buni programatori din Romania

Indecșii sunt utilizate pentru:

Să presupunem că emite următoarea declarație SELECT.

Dacă există un index mai multe coloane pe col1 și col2, rândurile corespunzătoare nu pot fi preluate direct. În cazul col1 coloanei și col2 există coduri distincte, optimizatorul încearcă să găsească indicele cel mai restrictiv prin determinarea indicelui care găsește mai puține rânduri și utilizează indexul pentru a prelua aceste linii.

Dacă tabelul are un indice de mai multe coloane, orice prefix al indicelui stânga poate fi utilizat de optimizator pentru a găsi rânduri. De exemplu, în cazul în care există un index pe cele trei coloane (col1, col2, Col3), atunci există potențialul pentru o căutare indexată (col1), (col1, col2) și (col1, col2, Col3).

MySQL nu se poate utiliza un indice parțial în cazul în care coloanele nu formează un prefix al indicelui extremitatea stângă. Să presupunem că există o instrucțiune SELECT. prezentat mai jos:

Dacă există un index pe (col1, col2, Col3), numai prima interogare prezentată mai sus folosește indexul. A doua și a treia solicitări de acest fel includ coloane indexate, dar (col2) și (col2, Col3) nu este capătul din stânga prefixele de piese (col1, col2, Col3).

MySQL utilizează indici, de asemenea, pentru comparații cum ar fi. dacă argumentul în expresia LIKE reprezintă un șir constant nu începe cu un simbol șablon. De exemplu, următoarele afirmații SELECT folosesc indici:

Numai rânduri sunt luate în considerare în prima echipă cu „Patrick“ <= key_col <"Patricl". а во второй - только строки с "Pat" <= key_col <"Pau".

Următoarele instrucțiuni SELECT nu se vor utiliza indici:

În prima echipa, valoarea LIKE începe cu un caracter wildcard. A doua comandă ca valoare nu este o constantă.

In versiunea de MySQL 4.0 este produsă o altă optimizare pe expresia LIKE. Dacă utilizați o expresie. Cum ar fi „%% șir de caractere“, iar lungimea șirului (șir) mai mult de 3 caractere, MySQL va utiliza un algoritm Turbo Boyer-Moore pentru a inițializa un șablon șir și apoi să utilizați acest șablon pentru a efectua o căutare mai rapidă.

Atunci când căutați folosind COLUMN_NAME IS NULL va folosi indexurile în cazul în care COLUMN_NAME este un index.

MySQL utilizează în mod normal, indicele care găsește cel mai mic număr de rânduri. Indicele este folosit pentru coloanele pe care le compara cu următorii operatori: =,>,> =, <, <=, BETWEEN и LIKE с префиксом, не содержащим шаблонного символа, такого как something%.

În cazul în care indicele nu acopera toate și nivelurile în clauza WHERE. nu este folosit pentru a optimiza interogare. Cu alte cuvinte: pentru a putea folosi indexul, un prefix de index trebuie să fie incluse în fiecare și de grup.

Următoarele clauza WHERE folosesc indici:

Următoarele clauze WHERE nu utilizează indici:

În unele cazuri, MySQL nu va folosi un index, chiar dacă este posibil. Câteva exemple de astfel de situații este prezentată mai jos:

MySQL.RU. Aprobat de cei mai buni programatori din Romania