Vadnica za indeks MySQL - Ustvari, dodaj & Spusti

Kazalo:

Anonim

Kaj je indeks?

Kazala v MySQL razvrščajo podatke organizirano zaporedno. Ustvarijo se v stolpcih, ki bodo uporabljeni za filtriranje podatkov. Kazalo si predstavljajte kot abecedno razvrščen seznam. Iskanje imen, razvrščenih po abecedi, je lažje kot nerazvrščenih.

Uporaba indeksa v tabelah, ki se pogosto posodabljajo, lahko povzroči slabo delovanje. To je zato, ker MySQL ustvari nov indeksni blok vsakič, ko so podatki dodani ali posodobljeni v tabeli. Na splošno je treba indekse uporabljati v tabelah, katerih podatki se ne spreminjajo pogosto, vendar se pogosto uporabljajo v izbranih iskalnih poizvedbah.

Kaj uporabljati indeks?

Nihče ne mara počasnih sistemov. Visoka zmogljivost sistema je izrednega pomena v skoraj vseh sistemih baz podatkov. Večina podjetij veliko vlaga v strojno opremo, tako da je lahko pridobivanje podatkov in manipulacija hitrejše. Vendar pa lahko podjetje investira v strojno opremo. Optimizacija baze podatkov je cenejša in boljša rešitev.

Počasnost odzivnega časa je običajno posledica naključnega shranjevanja zapisov v tabelah baz podatkov. Iskalne poizvedbe morajo vrteti skozi celotno naključno shranjene zapise enega za drugim, da poiščejo želene podatke. Posledica tega je nizka zmogljivost podatkovnih baz pri pridobivanju podatkov iz velikih tabel. Zato se uporabljajo indeksi, ki razvrščajo podatke za lažje iskanje.

Sintaksa: Ustvari indeks

Kazala je mogoče določiti na dva načina

  1. V času ustvarjanja tabele
  2. Po izdelavi tabele
Primer:

Za naš myflixdb pričakujemo veliko iskanj v zbirki podatkov s polnim imenom.

V novo tabelo "members_indexed" bomo indeksu dodali stolpec "polna_imena".

Spodnji scenarij nam pomaga, da to dosežemo.

CREATE TABLE `members_indexed` (`membership_number` int(11) NOT NULL AUTO_INCREMENT,`full_names` varchar(150) DEFAULT NULL,`gender` varchar(6) DEFAULT NULL,`date_of_birth` date DEFAULT NULL,`physical_address` varchar(255) DEFAULT NULL,`postal_address` varchar(255) DEFAULT NULL,`contact_number` varchar(75) DEFAULT NULL,`email` varchar(255) DEFAULT NULL,PRIMARY KEY (`membership_number`),INDEX(full_names)) ENGINE=InnoDB;

Izvedite zgornji skript SQL v delovnem okolju MySQL proti "myflixdb".

Osvežitev myflixdb prikaže novo ustvarjeno tabelo z imenom members_indexed.

Tabela "Note" members_indexed ima v vozlišču indeksov "full_names".

Ko se baza članov razširi in število zapisov poveča, bodo iskalne poizvedbe v tabeli members_indexed, ki uporabljajo stavka WHERE in ORDER BY, veliko hitrejše v primerjavi s tistimi, ki jih izvaja tabela članov, ne da bi bil indeks definiran.

Dodajte osnovno sintakso indeksa

Zgornji primer je ustvaril indeks pri definiranju tabele baze podatkov. Recimo, da imamo že določeno tabelo in so iskalne poizvedbe v njej zelo počasne. Predolgo trajajo, da vrnejo rezultate. Po preučitvi težave odkrijemo, da lahko močno izboljšamo delovanje sistema z ustvarjanjem INDEX-a v najpogosteje uporabljenem stolpcu v stavku WHERE.

Za dodajanje indeksa lahko uporabimo naslednjo poizvedbo

CREATE INDEX id_index ON table_name(column_name);

Predpostavimo, da so iskalne poizvedbe v tabeli filmov zelo počasne in želimo pospešiti poizvedbe z indeksom na "naslovu filma". Za to lahko uporabimo naslednji skript.

CREATE INDEX `title_index` ON `movies`(`title`);

Z izvrševanjem zgornje poizvedbe se ustvari indeks v naslovnem polju v tabeli filmov.

To pomeni, da bodo vse iskalne poizvedbe v tabeli s filmi z "naslovom" hitrejše.

Iskalne poizvedbe na drugih poljih v tabeli filmov pa bodo še vedno počasnejše v primerjavi s tistimi, ki temeljijo na indeksiranem polju.

Opomba: Po potrebi lahko ustvarite indekse v več stolpcih, odvisno od polj, ki jih nameravate uporabiti za iskalnik po zbirki podatkov.

Če si želite ogledati indekse, definirane v določeni tabeli, lahko za to uporabite naslednji skript.

SHOW INDEXES FROM table_name;

Oglejmo si zdaj vse indekse, opredeljene v tabeli filmov v myflixdb.

SHOW INDEXES FROM `movies`;

Izvedba zgornjega skripta v delovnem okolju MySQL v primerjavi z myflixdb nam da rezultate na ustvarjenem indeksu.

Opomba: MySQL je že indeksiral primarne in tuje ključe v tabeli. Vsak indeks ima svoje edinstveno ime in prikazan je tudi stolpec, v katerem je definiran.

Sintaksa: padec indeksa

Ukaz drop se uporablja za odstranjevanje že določenih indeksov v tabeli.

Včasih lahko v tabeli že določite indeks, ki se pogosto posodablja. Morda boste želeli odstraniti indekse iz take tabele, da izboljšate zmogljivost poizvedb UPDATE in INSERT. Osnovna sintaksa, ki se uporablja za spuščanje indeksa v tabelo, je naslednja.

DROP INDEX `index_id` ON `table_name`;

Oglejmo si zdaj praktični primer.

DROP INDEX ` full_names` ON `members_indexed`;

Z izvajanjem zgornjega ukaza se indeks z id `full_names` spusti iz tabele members_indexed.

Povzetek

  • Indeksi so zelo zmogljivi, ko gre za močno izboljšanje učinkovitosti iskalnih poizvedb MySQL.
  • Indekse je mogoče določiti pri ustvarjanju tabele ali dodati pozneje, ko je tabela že izdelana.
  • Kazala lahko definirate v več stolpcih v tabeli.
  • SHOW INDEX FROM table_name se uporablja za prikaz definiranih indeksov v tabeli.
  • Ukaz DROP se uporablja za odstranitev definiranega indeksa v dani tabeli.