MySQL indeksa apmācība - izveide, pievienošana un amp; Drop

Satura rādītājs:

Anonim

Kas ir indekss?

Rādītāji MySQL sakārto datus organizētā secīgā veidā. Tie tiek izveidoti kolonnā (s), kas tiks izmantota datu filtrēšanai. Iedomājieties indeksu kā alfabētiski sakārtotu sarakstu. Ir vieglāk meklēt vārdus, kas ir sakārtoti alfabētiskā secībā, nekā tos, kas nav kārtoti.

Indeksa izmantošana bieži atjauninātās tabulās var izraisīt sliktu veiktspēju. Tas ir tāpēc, ka MySQL katru reizi, kad dati tiek pievienoti vai atjaunināti tabulā, izveido jaunu indeksa bloku. Parasti indeksi jāizmanto tabulās, kuru dati bieži nemainās, bet tiek daudz izmantoti atlasītajos meklēšanas vaicājumos.

Ko izmantot indeksu?

Nevienam nepatīk lēnas sistēmas. Augsta sistēmas veiktspēja ir galvenā nozīme gandrīz visās datu bāzu sistēmās. Lielākā daļa uzņēmumu iegulda lielus līdzekļus aparatūrā, lai datu izguve un manipulācijas varētu būt ātrākas. Bet uzņēmējdarbības aparatūras ieguldījumiem ir ierobežojums. Datu bāzes optimizēšana ir lētāks un labāks risinājums.

Reakcijas laika lēnums parasti ir saistīts ar ierakstu nejaušu glabāšanu datu bāzes tabulās. Meklēšanas vaicājumiem ir jāapgūst visi nejauši glabātie ieraksti viens pēc otra, lai atrastu vēlamos datus. Tas rada sliktas veiktspējas datu bāzes, kad runa ir par datu izgūšanu no lielām tabulām. Tādējādi tiek izmantoti indeksi, kas kārto datus, lai atvieglotu meklēšanu.

Sintakse: Izveidot indeksu

Indeksus var definēt divējādi

  1. Galda izveidošanas laikā
  2. Pēc tam, kad tabula ir izveidota
Piemērs:

Par mūsu myflixdb mēs sagaidām daudz meklēšanas datu bāzē ar pilnu vārdu.

Sleju “full_names” indeksam pievienosim jaunā tabulā “members_indexed”.

Zemāk parādītais skripts palīdz mums to sasniegt.

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;

Izpildiet iepriekš minēto SQL skriptu MySQL darbagaldā pret "myflixdb".

Atsvaidzinot myflixdb, tiek parādīta jaunizveidotā tabula ar nosaukumu members_indexed.

"Piezīme" members_indexed tabulā indeksu mezglā ir "full_names".

Paplašinoties dalībnieku bāzei un palielinoties ierakstu skaitam, meklēšanas vaicājumi tabulā members_indexed, kuros tiek izmantotas klauzulas WHERE un ORDER BY, būs daudz ātrāki, salīdzinot ar tiem, kas veikti dalībnieku tabulā bez definēta indeksa.

Pievienojiet indeksa pamata sintaksi

Iepriekš minētais piemērs izveidoja indeksu, nosakot datu bāzes tabulu. Pieņemsim, ka mums jau ir definēta tabula, un tajā meklēšanas vaicājumi ir ļoti lēni. Rezultātu atdošana prasa pārāk ilgu laiku. Izpētījuši problēmu, mēs atklājam, ka mēs varam ievērojami uzlabot sistēmas veiktspēju, izveidojot INDEX uz WHERE klauzulas visbiežāk izmantotās kolonnas.

Lai pievienotu indeksu, mēs varam izmantot šādu vaicājumu

CREATE INDEX id_index ON table_name(column_name);

Pieņemsim, ka meklēšanas vaicājumi uz filmu galda ir ļoti lēni un mēs vēlamies izmantot indeksu "filmas nosaukumā", lai paātrinātu vaicājumus, lai to panāktu, mēs varam izmantot šādu skriptu.

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

Izpildot iepriekš minēto vaicājumu, filmu tabulas nosaukuma laukā tiek izveidots indekss.

Tas nozīmē, ka visi meklēšanas vaicājumi uz filmu galda, izmantojot nosaukumu, būs ātrāki.

Meklēšanas vaicājumi citos filmu tabulas laukos tomēr būs lēnāki, salīdzinot ar tiem, kuru pamatā ir indeksētais lauks.

Piezīme. Vajadzības gadījumā var izveidot indeksus vairākās kolonnās atkarībā no laukiem, kurus plānojat izmantot datu bāzes meklētājprogrammai.

Ja vēlaties apskatīt indeksus, kas definēti noteiktā tabulā, varat to izdarīt, lai to izdarītu.

SHOW INDEXES FROM table_name;

Apskatīsim visus indeksus, kas definēti filmu tabulā myflixdb.

SHOW INDEXES FROM `movies`;

Iepriekš minētā skripta izpildīšana MySQL darbagaldā pret myflixdb dod mums rezultātus par izveidoto indeksu.

Piezīme: MySQL jau ir indeksējis galvenās un svešās atslēgas uz tabulas. Katram indeksam ir savs unikālais nosaukums, un tiek parādīta arī kolonna, kurā tas ir definēts.

Sintakse: krituma indekss

Komanda nomest tiek izmantota, lai noņemtu jau definētus rādītājus tabulā.

Var būt reizes, kad tabulā jau esat definējis indeksu, kas tiek bieži atjaunināts. Iespējams, vēlēsities noņemt šādas tabulas rādītājus, lai uzlabotu UPDATE un INSERT vaicājumu veiktspēju. Pamata sintakse, ko izmanto, lai nomestu indeksu uz tabulas, ir šāda.

DROP INDEX `index_id` ON `table_name`;

Tagad aplūkosim praktisku piemēru.

DROP INDEX ` full_names` ON `members_indexed`;

Izpildot iepriekšminēto komandu, tabulā members_indexed tiek nomests indekss ar ID “full_names”.

Kopsavilkums

  • Indeksi ir ļoti spēcīgi, ja nepieciešams ievērojami uzlabot MySQL meklēšanas vaicājumu veiktspēju.
  • Indeksus var definēt, veidojot tabulu, vai pievienot vēlāk, kad tabula jau ir izveidota.
  • Indeksus var definēt vairāk nekā vienā tabulas kolonnā.
  • RĀDĪT RĀDĪTĀJU NO tabulas_nosaukums tiek izmantots, lai parādītu tabulā definētos indeksus.
  • DROP komandu izmanto, lai noņemtu definētu indeksu dotajā tabulā.