Fórum Root.cz

Hlavní témata => Server => Téma založeno: Vladimír Drgoňa 14. 09. 2012, 12:18:58

Název: MySQL a rychlé sloučení řetězců
Přispěvatel: Vladimír Drgoňa 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.
Název: Re:MYSQL: CONCAT(a,b,c)=CONCAT(aa,bb,cc) alebo a=aa AND b=bb AND c=cc?
Přispěvatel: Karel Bezděda 14. 09. 2012, 12:31:41
Jestli je to hádanka, tak odpovídám: druhá varianta.
Název: Re:MYSQL: CONCAT(a,b,c)=CONCAT(aa,bb,cc) alebo a=aa AND b=bb AND c=cc?
Přispěvatel: Vladimír Drgoňa 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.
Název: Re:MySQL a rychlé sloučení řetězců
Přispěvatel: Kajman 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í.
Název: Re:MySQL a rychlé sloučení řetězců
Přispěvatel: lobo 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
Název: Re:MySQL a rychlé sloučení řetězců
Přispěvatel: Vladimír Drgoňa 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.
Název: Re:MySQL a rychlé sloučení řetězců
Přispěvatel: mslebodnik 14. 09. 2012, 16:59:55
a co hovori explain select ?
Název: Re:MySQL a rychlé sloučení řetězců
Přispěvatel: Vladimír Drgoňa 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.