25. July 2007
Cind e nevoie de index intr-o tabela mysql ?
Iata o problema de mysql de care m-am lovit recent. Si cu aceasta ocazie am si făcut nişte teste de viteza. Iar rezultatele au fost spectaculoase.
Sa presupunem ca avem o tabela simpla :
an - integer; luna - integer; zi - integer ; ora - integer ; minut - integer; operatie - string;
Si in timp sa presupunem ca tabela se populează cu 150.000 recorduri. Ulterior sa presupunem este necesara modificarea câmpului operaţie pentru anumite intervale orare . Prin urmare vor fi nişte query-uri de genul : UPDATE tabela SET Operatie=“teste” WHERE zi = 1 AND luna = 1 AND ora = 0 AND minut = 3 ; . Sa presupunem ca vine un lot de 78.000 de query-uri de update.
Daca nu se foloseşte index pe tabela rezultatul este acesta:
root@tfm64: 2# time mysql N < test.sql real 55m2.482s user 0m2.296s sys 0m1.248s
Crearea unui index se face : ALTER TABLE tabela ADD INDEX gigi (luna,zi,ora,minut) ; si durează câteva secunde. După crearea indexului rulând aceeaşi comanda vine surpriza :
root@tfm64: 2# time mysql N < test.sql real 0m12.516s user 0m1.140s sys 0m0.608s Are cineva nevoie de 55 de minute ?