MySQL tárolt eljárás - hogyan gyorsabb?
2010-08-05T08:30:43+02:00
2010-08-07T09:09:17+02:00
2022-07-19T04:37:39+02:00
  • Köszönöm mindenkinek a segítséget!
    Mutasd a teljes hozzászólást!
  • Php-ból te nem írsz közvetlenül semmit sem a db-be, tehát a kérdés igazából az, hogy egy update sql utasítás hívása a gyorsabb-e vagy egy tárolt eljárásé (mivel mindkettőt egy-egy mysql_query vagy mysqli_query-vel hívod meg, ezért php-mysql viszonylatban a tárolt eljárás meghívásához szükséges utasítás rövidebbségéből, illetve a tárolt eljárás már előre lefordított, optimalizált létéből fakadó előnyt lehet kihasználni).

    A különbség olyan csekély egy ilyen egyszerű sql utasítás mellett, hogy nem éri meg tárolt eljárással vessződni. Tárolt eljárást olyankor célszerű használni, ha egy nagyon intenzív, korábbi eredményhalmazokra támaszkodó kódot kell készíteni (pl. hierarchikus szerkezet rekurzív bejárása). Ekkor a tárolt eljárással megspórolható a sok mysql-php kommunikáció.
    Mutasd a teljes hozzászólást!
  • Tárolt eljárást csak bonyolultabb dolgokra szoktak...
    Egyébként az első lenne a leggyorsabb megoldás, a többi meg mondjuk 2 pillanattal menne mögötte.
    De tökmindegy, nem kell mindent agyonoptimalizálni, pont az a lényeg, hogy először megírod a kódot működőképesre, aztán ha nem elég gyors, csak akkor állsz neki optimalizálni.
    Mutasd a teljes hozzászólást!
  • Akkor szerintem értelmetlen a tárolt eljárás, gyorsabban lemegy php-ből
    Mutasd a teljes hozzászólást!
  • Csak sima jóváírás. Semmi számítás.
    Csak egy egyszerű UPDATE ... SET arany = arany + pont WHERE userid = ...
    Mutasd a teljes hozzászólást!
  • "Jovairaskor" kell bonyolultabb szamitasokat is vegezned, vagy csak egy egyszerubb query-t futtatsz le? Ha utobbi, nem biztos, hogy nyersz barmit is tarolt eljarassal...
    Mutasd a teljes hozzászólást!
  • Sziasztok!

    Szeretném profik véleményét kikérni. Van egy játékoldalam ahol többféle pontozási rendszer is van. Azaz a játékosok gyűjthetnek ezüstöt, aranyat és gyémántot is.

    Az egyes játékokban szerzett pontok jóváírását tárolt eljárásban kívánom megoldani (mivel tudomásom szerint így gyorsabb mintha a PHP kódban oldanám meg).

    A kérdésem pedig az lenne, hogy melyik a gyorsabb megoldás:
    1.) Minden egyes pont jóváírásra külön készítek egy-egy tárolt eljárást (pl ezust_jovairas, arany_jovairas, gyemant_jovairas) és csak userid-t és pont számot adok meg értékként
    vagy
    2.) Ha egy IN adattal nemcsak a userid-t és a jóváírandó pontok számát, hanem egy betűt is továbbítok a tárolt eljárásnak hogy az tudja ezüstöt, aranyat vagy gyémátot kell jóváírnia és
    2a.) IF ágakkal választom ki hogy melyik jóváírás fusson le (minden IF ágban a maga jóváírása fut le)
    2b.) CASE vizsgálattal megnézem hogy melyik helyre kell jóváírnia a pontot és a megfelelő kód fut le mint az IF-es ágnál.

    A kérdés tehát hogy a fenti három lehetőség közül melyiket ajánlanátok mint leggyorsabban lefutó megoldást?

    Köszönöm előre is a válaszokat!
    Mutasd a teljes hozzászólást!
abcd