MySQL a rychlé sloučení řetězců

MySQL a rychlé sloučení řetězců
« kdy: 14. 09. 2012, 12:18:58 »
MySQL:

Kód: [Vybrat]
CONCAT(a,b,c)=CONCAT(aa,bb,cc)
alebo

Kód: [Vybrat]
a=aa AND b=bb AND c=cc
Čo bude rýchlejšie, keď a,b,c sú polia tabuľky a existuje index a+b+c? aa, bb a cc sú lokálne premenné v procedure na MySQL serveri.
« Poslední změna: 14. 09. 2012, 12:34:55 od Petr Krčmář »


Karel Bezděda

Re:MYSQL: CONCAT(a,b,c)=CONCAT(aa,bb,cc) alebo a=aa AND b=bb AND c=cc?
« Odpověď #1 kdy: 14. 09. 2012, 12:31:41 »
Jestli je to hádanka, tak odpovídám: druhá varianta.

Re:MYSQL: CONCAT(a,b,c)=CONCAT(aa,bb,cc) alebo a=aa AND b=bb AND c=cc?
« Odpověď #2 kdy: 14. 09. 2012, 12:36:41 »
Jestli je to hádanka, tak odpovídám: druhá varianta.
Nie, ale neviem sa rozhodnúť, keďže polia majú iba spoločný index.

Kajman

Re:MySQL a rychlé sloučení řetězců
« Odpověď #3 kdy: 14. 09. 2012, 12:40:27 »
Navíc první varianta může vracet více výsledků (i chybné), než varianta druhá. A onen společný index druhou variantu právě urychlí.

lobo

Re:MySQL a rychlé sloučení řetězců
« Odpověď #4 kdy: 14. 09. 2012, 14:20:10 »
Navíc první varianta může vracet více výsledků (i chybné), než varianta druhá. A onen společný index druhou variantu právě urychlí.

jo, pripadne treba pouzit nejake delimitery ale to uz zachazame uplne mimo
napriklad tieto dva riadky budu identicke pre Concat
a=1 b=21 c=3
a=1 b=2   c=13


Re:MySQL a rychlé sloučení řetězců
« Odpověď #5 kdy: 14. 09. 2012, 15:21:36 »
napriklad tieto dva riadky budu identicke pre Concat
a=1 b=21 c=3
a=1 b=2   c=13
Samozrejme o takomto prípade viem, ale táto možnosť nemôže nastať, pretože ide o stringy s konštantnou dĺžkou.
Už som použil II. možnosť, s rýchlosťou som spokojný. Ďakujem za pomoc.

Re:MySQL a rychlé sloučení řetězců
« Odpověď #6 kdy: 14. 09. 2012, 16:59:55 »
a co hovori explain select ?

Re:MySQL a rychlé sloučení řetězců
« Odpověď #7 kdy: 14. 09. 2012, 19:13:35 »
a co hovori explain select ?
Neskúšal som, select je súčasťou väčšej procedure, kde všetko beží v cykle a jedným cursorom a v každom cykle idú 4 selecty takéhoto typu. Cursor má cca 10 000 riadkov a celé to peží pár sekúnd, takže pohoda.