Claudiu Persoiu

Blog-ul lui Claudiu Persoiu


Un index face diferenta

with 3 comments

Ca sa faci o aplicatie web in general ai nevoie de o baza de date. La scoala in general invatam ca “baza de date este administrata de administratorul bazei de date”. Teoretic asa ar trebui sa se intample, practic… ajungem sa ne facem singuri bazele de date de cele mai multe ori.

PHP este folosit in general cu un SGBD (Sistem de Gestiune al Bazelor de Date), de obicei aceasta este MySQL. Atunci cand o aplicatie incepe sa mearga greu in general se cauta metode de optimizare incepand de la reducerea sau inlocuirea functiilor lente (de exemplu echo este mai rapida ca print sau nl2br($text) este mai rapida ca str_replace(“\r\n”,”<br>”,$text)) pana la reducerea numarului de cereri http (in loc de mai multe fisiere css se foloseste unul singur). Totusi un mod foarte simplu pe care foarte multi nu il iau in calcul este acela de a adauga un index pe tabela.

Index-ul se adauga pe un camp pe care se fac sortari sau se pun conditii. Avantajul major este in momentul cand se extragi datele. Dezavantajul este atunci cand se introduc datele. Pe o tabela unde se fac modificari frecvent poate sa fie discutabila nevoia de un index, depinde de raportul de select-uri vs. insert-uri.

Cum se adauga un index:

ALTER TABLE tabela SET INDEX(camp);

Chiar zilele trecute aveam o interogate destul de greoaie pe mai multe tabele si nu intelegeam cum poate totusi sa mearga atat de greu. Am adaugat un index pe criteriul de filtrare si unul pe cel de ordonare iar in mai putin de 5 minute totul a devenit mult mai rapid, a devenit de 3 ori mai rapida interogarea (si nu am decat 2000 de inregistrari)!

Poate cateva milisecunde in plus nu par mare lucru, dar luati in calcul cateva zeci sau chiar sute de interogari pe o singura pagina, inmultiti cu numarul utilizatoriilor care acceseaza pagina simultan si… nu o sa mai apara atat de putin.

Written by Claudiu Persoiu

8 December 2008 at 10:39 PM

Posted in Web stuff

Tagged with ,

3 Responses to 'Un index face diferenta'

Subscribe to comments with RSS or TrackBack to 'Un index face diferenta'.

  1. Foarte interesant…
    App. ai făcut o școala de așa ceva? (php , mysql , zend etc.)

    sesserik

    6 February 2009 at 8:12 PM

  2. Merci. De php am avut un curs pe la facultate dar nu am invatat mare lucru de acolo, cam tot ce am invatat am invatat din carti, articole, formuri si multa practica.

    admin

    6 February 2009 at 8:22 PM

  3. Și cu asta pot să zic că mă bucur că nu sunt singurul care vrea sa învețe din resursele free sau “mai puțin free” de pe internet.
    Bravo!

    sesserik

    6 February 2009 at 9:59 PM

Leave a Reply