MySQL indeksi kontrollimine | SQL käsud ja haldamine

1. MySQL-i indeksid: andmebaasi jõudluse parandamise võti

MySQL-i andmebaasis indekseid tõhusalt kasutades saate päringute jõudlust märkimisväärselt parandada. Indeks on andmestruktuur, mis luuakse andmebaasi konkreetsetele veergudele (tulpadele) ning mille eesmärk on suurendada otsingu ja filtreerimise kiirust. Näiteks suures andmemahus konkreetse teabe väljavõtmisel võimaldab indeks kasutamine vältida kogu andmete läbivaatamist ja otsida ainult indeksi sees määratud veerge.

Indeksi roll ja tüübid

MySQL-i indeksitel on järgmised tüübid.
  • PRIMARY(primaarvõti):Tabeli kohta on lubatud ainult üks unikaalne võti, mida kasutatakse tabeli peamise identifikaatorina.
  • UNIQUE indeks:Indeks, mis säilitab unikaalsuse ja takistab määratud veergudele duplikaatväärtuste sisestamist.
  • tavaline indeks:Indeks, millel ei ole unikaalsuse piirangut ja mida kasutatakse konkreetsete veergude otsingutõhususe suurendamiseks.
Nii et indeksid suurendavad tabelite otsingu ja andmete manipuleerimise tõhusust ning eriti suurtes andmekogudes on need asendamatu element. Kuid liiga paljude indeksite korral muutuvad INSERT- ja UPDATE-toimingud aeglasemaks, seega on oluline indekseid vajadusel hallata.

2. MySQL-is indeksite kontrollimise põhiline meetod

MySQL-s kasutatakse olemasolevate indeksite kontrollimiseks SHOW INDEX käsku. See on lihtne SQL käsk, mis kuvab määratud tabeli indeksite teavet. Allpool tutvustame konkreetseid samme.

SHOW INDEXi põhiline süntaks ja väljund

SHOW INDEX FROM tabeli_nimi;

Väljundi selgitus

Kui käivitate selle käsu, kuvatakse järgmine teave.
  • Table: indeksit sisaldava tabeli nimi
  • Non_unique: indeks on unikaalne (0) või lubab kordusi (1)
  • Key_name: indeksi nimi
  • Column_name: veeru nimi, millele indeks on rakendatud
  • Cardinality: indeksis registreeritud unikaalsete väärtuste hinnang. Kasutatakse otsingu tõhususe näitajana.
Selle teabe kasutamisega saate visuaalselt mõista tabeli indeksite olukorda ja indeksite jaotust iga veeru kohta. Samuti on võimalik kasutada WHERE lauset, et piirata kuvamist.

3. INFORMATION_SCHEMA.STATISTICS tabeli indeksite kontrollimine

SHOW INDEX käsu kõrval on MySQL-is ka võimalus kontrollida indekseid viidates INFORMATION_SCHEMA.STATISTICS tabelile. See on kasulik kogu andmebaasi indeksite loetlemiseks ning võimaldab saada veelgi üksikasjalikumat teavet.

INFORMATION_SCHEMA.STATISTICS põhikü

SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, INDEX_NAME 
FROM INFORMATION_SCHEMA.STATISTICS 
WHERE TABLE_SCHEMA = 'andmebaasi_nimi';

Päringu tulemuste üksikasjad

  • TABLE_SCHEMA: indeksi kuuluv andmebaasi nimi
  • TABLE_NAME: tabeli nimi, kus indeks eksisteerib
  • COLUMN_NAME: veeru nimi, millele indeks on rakendatud
  • INDEX_NAME: indeksi nimi
Selle meetodi abil saab vaadata indeksi teavet loendina, mis hõlmab mitut tabelit või konkreetset andmebaasi. See on eriti kasulik kogu andmebaasi indeksihalduse korral.

4. Indeksi lisamise ja eemaldamise meetodid ning nende mõju

Indeksi lisamise meetod

Indeksit saab vajadusel hiljem lisada. Kasutades allolevat käsku, luuakse indeks määratud veerule.
CREATE INDEX indeksi_nimi ON tabeli_nimi(veeru_nimi);
Näiteks, kui soovite lisada indeksi users tabeli email veerule, käivitage järgnev:
CREATE INDEX idx_email ON users(email);

Indeksi eemaldamise meetod

Kasutamata indekseid saab eemaldada, et optimeerida INSERT- ja UPDATE-toimingute jõudlust. Eemaldamiseks kasutatakse DROP INDEX käsku.
DROP INDEX indeksi_nimi ON tabeli_nimi;
Kasutamata indeksi näideteks on indeksid, mis on seatud veergudele, mida ei kasutata otsingutingimustes (WHERE-lause). Indeksi eemaldamisega on võimalik parandada andmete sisestamise ja värskendamise kiirust.

5. EXPLAIN lauset kasutades indeksi jõudluse kontroll

MySQL-i EXPLAIN lause on kasulik, et kontrollida päringu täitmisplaani ja uurida, milline indeks on rakendatud. Sellega saab hinnata indeksi tõhusust ja vajadusel optimeerida.

EXPLAIN lause põhiline kasutamine

EXPLAIN SELECT * FROM tabeli_nimi WHERE veeru_nimi = 'tingimus';
Selle käsu kasutamisel saab kontrollida, kas indeksit kasutatakse või toimub täiskaalal skaneerimine. Tulemuseks sisaldab järgmisi elemente:
  • type: päringu tüüp (ALL tähendab täiskaalal skaneerimist, INDEX tähendab indeksi kasutamist)
  • possible_keys: päringu jaoks kasutatavate indeksite loend
  • key: tegelikult kasutatava indeksi nimi
  • rows: skaneeritavate ridade hinnanguline arv
Nende teabe põhjal saab analüüsida indeksi tõhusust ja otsustada, kas on vaja parandada otsingu jõudlust.

6. Kokkuvõte

Indeksite õige haldamine on MySQL-i andmebaasi jõudluse optimeerimiseks hädavajalik. Eriti suurte andmemahuga tabelite puhul, kui indekseerida veerge, mida kasutatakse WHERE- või JOIN-lauseites, paraneb otsingu tõhusus märkimisväärselt. Kuid liiga palju indekseid võib aeglustada sisestus- ja värskendustoiminguid, seega on mõõdukas tasakaal oluline. Indeksite lisamise, kontrollimise, eemaldamise ja jõudluse kontrollimise protseduuride mõistmisega muutub andmebaasi optimeerimine lihtsamaks ning kogu süsteemi tõhusus tõuseb.