Mysql folosind indexuri


MySQL: Utilizarea de indici


Continuând subiectul MySQL de ieri, vreau să vorbesc cu dvs. despre indexarea tabelelor.

În sine, construirea tabelelor și accesarea conținutului acestora este atât de simplă și de înțeles încât mulți oameni, având tehnici de bază, nu mai încearcă să studieze sintaxa construirii și optimizării meselor mai adânc.







Între timp, numai indexarea tabelului ridică uneori performanța site-ului de mai multe ori.

Ce fel de animal este asta - indexarea? Voi încerca să explic prin exemplu.

Cred că este de prisos să explicăm de ce se fac toate astea și de ce bibliotecarii sunt atât de zeloși în ceea ce privește ordinea plasării cărților pe rafturi. Dar îmi permit să vă atrag atenția asupra eficienței comparative a căutării într-un astfel de sistem structurat, care, de altfel, este de obicei neglijat în construcția și utilizarea bazelor de date computerizate.

Să presupunem că vă aflați în bibliotecă în căutarea unei cărți "Cum să cresc florile pe teren uscat".

Dacă începeți să treceți prin toate cărțile în bibliotecă în mod stupid, atunci vă va lua mai mult de o zi sau chiar o lună pentru ao completa, dacă este o bibliotecă mare.

Deci, ce naiba, îmi cer scuze pentru claritate, îi forțăm pe calculatoarele noastre să caute datele de care avem nevoie printr-o căutări greșite? Doar pentru că o fac repede?

Da, repede. Dar aceasta este dacă căutarea trebuie făcută în mii de înregistrări. Și dacă vorbim de milioane? Sau credeți că baza dvs. de date nu este atât de mare pentru a fi angajată în optimizarea sa? Te-ai înșelat, draga mea. De îndată ce sute de oameni se întorc la baza de date, deci mii de înregistrări se vor transforma imediat într-un motor de bază de date în milioane! Și furnizorul dvs. vă va face în mod rezonabil o remarcă.

Ei bine, atunci. În acele baze de date trebuie indexate - nu există îndoieli cu privire la programator. Analizele construite corect permit găsirea informațiilor necesare "o singură atingere".

Cum se întâmplă din punct de vedere tehnic - nu trebuie să știm. Este suficient să rețineți că MySQL, ca orice alt motor de baze de date, utilizează un spațiu pe disc suplimentar pentru a stoca fișiere index. Este necesar să cunoaștem acest lucru numai pentru a nu produce indici inutili. În tot ceea ce trebuie să cunoașteți măsura. Chiar și într-o afacere utilă ca tabelele de indexare.

Deci, să determinăm imediat ceea ce trebuie să indicăm.

Și trebuie să indexați acele câmpuri ale tabelului, prin care datele sunt căutate sau sortate.







Dacă adăugăm un index la tabelul cărților prin câmpul book_name (numele cărții), MySQL va crea indexul acestui tabel. Adică, sortează tabelul cu câmpul specificat și plasează etichetele și link-urile către celule într-o masă reală.

Prin construirea unui index pe BOOK_NAME teren, calculatorul nostru va găsi primele litere ale necesare lucrări de aproape instantaneu, deoarece nu mai este necesar să se rezolve întreaga masă, ci doar uita-te la acea parte în cazul în care înregistrările sunt stocate în litera dorită.

Cu alte cuvinte, dacă căutăm cărți cu litera "M", atunci calculatorul nu va trece prin intrări începând cu alte litere, știind foarte bine că nu există înregistrări care să satisfacă interogarea.

Și dacă în cartea noastră bază de date conține 100.000 de cărți, dintre care doar 30 cu litera F, on-demand „pentru a găsi toate cărțile de pe litera F“, calculatorul enumără doar 30 de intrări în prezența indicelui, sau enumără 100.000 de înregistrări în absența acestuia.

În opinia mea, beneficiile sunt evidente.

Apropo, indexarea câmpurilor de text este un pic mai complicată decât indexarea câmpurilor de alt tip. Voi explica. Valorile digitale, alfabetice, booleene, date, timp și altele sunt indexate, de regulă, fără nici un fel de gândire suplimentară.

modificați tabelul tbl_books adăugați indexul i_date (book_date);

Această directivă îi spune MySQL să creeze un index pe câmpul book_date.

În mod similar, puteți crea indexuri pentru alte câmpuri, pentru care ne interesează căutarea sau sortarea.

Crearea aceluiași index pe câmpul de text este complicată numai de faptul că trebuie să specificați numărul de caractere de la începutul înregistrării pe care doriți să creați un index.

Și atunci tu ar trebui să estimați mărimea bazei, similitudinea primelor personaje ale diferitelor înregistrări și așa mai departe.

De exemplu, dacă construim un index pe nume de stradă, atunci nu este nevoie să le indexăm pe întreaga lungime, dar putem presupune că majoritatea covârșitoare a înregistrărilor va începe să difere deja undeva pe a cincea literă.

Și dacă indexăm codurile rulmenților, este mai bine să indice cât mai multe simboluri, deoarece un număr mare de produse pot transporta coduri care diferă doar prin ultimele litere sau cifre.

Dacă doriți să vedeți ce câmpuri din tabel sunt indexate, dați comanda MySQL:

și MySQL afișează toate informațiile despre tabela tbl_name, inclusiv indexarea câmpurilor.

Sau mai detaliat, doar despre indicii:

afișați indexul de la tbl_name;

Rămâne de remarcat că multe domenii pot participa la index. Nu neapărat una.

Dacă în baza de date a facturilor este căutată cel mai adesea cu suma luând în considerare intervalul de date, este logic să creați un index pentru aceste două câmpuri: suma și data. Adică, creați un index pentru două câmpuri, nu doi indici pentru fiecare câmp!

modificați tabelul tbl_name adăugați index i_name (câmp1, câmp2);

Căutarea unor indexuri unice se face puțin mai rapid, deci dacă valoarea unui câmp ar trebui să fie neapărat unică - nu fi prea leneș să notați acest lucru în proiectarea tabelului. MySQL vă va mulțumi cu viteza răspunsurilor la întrebările dvs.

Înainte de a spune la revedere, aș vrea să vă spun o directivă utilă MySQL. Se numește explică.

Dacă puneți acest cuvânt înaintea oricărei interogări în baza de date, MySQL nu vă va arăta rezultatul interogării, dar va afișa informații detaliate despre ce înseamnă că trebuie să utilizați și câte operații a trebuit să fie efectuate pentru a obține un răspuns la solicitarea dvs.

Acest cuvânt magic vă va permite să evaluați eficiența oricărei interogări și să ajustați toți indicii din baza de date.

Indexarea cu succes, și da, va veni cu tine!







Articole similare

Trimiteți-le prietenilor: