Tárolt eljárást készíteni mikor érdemes, hogyan kell telepíteni MySQL-ben?
Hali!
Még teljesen kezdő kérdések :\. De a mysql honlapján olvasgattam a tárolt eljárásokról, hogy hogyan kell készíteni, majd meghívni. Ott csak egyszerűen a mysql konzolba írja.
A kérdés az lenne, hogy ha mondjuk írok egy egyszerű tárolt eljárást - amit majd php-ba futtatok query-vel például egy egyszerű COUNT(*) - akkor ezt a kis tárolt eljárást kódot egy külső sql fájlba teszem és feltöltöm a szerverre mikor az adatbázis telepítem és az addig marad míg meg nem szüntetem vagy hogy kell ilyet csinálni?
Illetve annyit olvastam még, hogy így gyorsabb lesz a lekérdeéz végrehajtás - ez tényleg igaz?
Mennyire érdemes tárolt eljárásokat készíteni a hagyományos legérdezéssel szemben? (Tehát gondolok arra, ha komplex vagy olyan lekérdezés van ami biztos sokszor kerül végrehajtásrsa)...
■ Még teljesen kezdő kérdések :\. De a mysql honlapján olvasgattam a tárolt eljárásokról, hogy hogyan kell készíteni, majd meghívni. Ott csak egyszerűen a mysql konzolba írja.
A kérdés az lenne, hogy ha mondjuk írok egy egyszerű tárolt eljárást - amit majd php-ba futtatok query-vel például egy egyszerű COUNT(*) - akkor ezt a kis tárolt eljárást kódot egy külső sql fájlba teszem és feltöltöm a szerverre mikor az adatbázis telepítem és az addig marad míg meg nem szüntetem vagy hogy kell ilyet csinálni?
Illetve annyit olvastam még, hogy így gyorsabb lesz a lekérdeéz végrehajtás - ez tényleg igaz?
Mennyire érdemes tárolt eljárásokat készíteni a hagyományos legérdezéssel szemben? (Tehát gondolok arra, ha komplex vagy olyan lekérdezés van ami biztos sokszor kerül végrehajtásrsa)...
hat ez eleg bonyolult :))
meg inkabb hasznos abban az estben, ha az uzleti logika egy resze kerul tarolt eljarasba. Igy barhonnan meghivva ugyan az a funkcionalitas erheto el. Nem fugg a hivo kornyezet programnyelvetol.
A mysql query-browsert javaslom a tarolt eljarasok szerkesztesere. Ez ingyenes es letoltheto a mysql honlapjarol. Vagy ami jo meg es ingyenes windowson a SQLyog
bongyi
Mikor
1. Tfh. van olyan adatlekérésed, ami a PHP-MySQL párosban oda-vissza passzolgatja az adatokat. Ez esetben, ha meg tudod a PHP logikáját oldani MySQLben, akkor sokkal gyorsabb lesz.
2. Tfh különböző helyekről (PHP, C++, stb) használod az adatbázist. Ekkor a tárolt eljárások egységes felületet biztosítanak, kevesebbet lehet elcseszni.
3. Egyszerűen csak kényelmes vagy, nem akarod, hogy a PHPnek túl sok köze legyen az adatbázisokhoz.
Én személy szerint kényelmes vagy és ez nagyon megnövelte a produktivitásomat, gyorsabban haladok. Cserébe viszont lemondtam a hordozhatóságról.
A MySQL doksi azt mondja, hogy amennyit csak át tudsz tolni a programlogikából az adatbázisba, annyit tolj is át.
hasznalat
ez "csak" egy szolgáltatás
http://dev.mysql.com/doc/refman/5.1/en/stored-procedures.html
Nem kell pluszba semmit telepíteni hozzá, csak 5-ös verziód legyen.
Itt találhatsz példákat is:
http://forge.mysql.com/
példa
PROCEDURE simpleproc (OUT param1 INT)
BEGIN
SELECT COUNT(*) INTO param1 FROM t;
END;
amit majd meg szeretnék hívni php:
$result = $conn->query("CALL simpleproc(@a)");
akkor a mysql honnan veszi, hogy van egy ilyen eljárásom? Ezzel kapcsolatban kérdeztem, hogy ezt akkor esetleg egy külső sql fájlba teszem?
Egy egyszerű példát tudnál erre írni?
Köszönöm.
honnan veszi
döntés
Már működik a dolog. Annyit kérdeznék még, hogy azt írták itt többen, hogy a gyorsaság miatt és ha bonyolult lekérdezésünk van, akkor érdemes használni a tárolt eljárásokat. Valamit - Egy korábbi hozzászólásba - "A MySQL doksi azt mondja, hogy amennyit csak át tudsz tolni a programlogikából az adatbázisba, annyit tolj is át." Ezt hogy kell érteni, mert gondolom minden egyszerű eljárást azért nem írnak át? Illetve ha vagy egy egyszerű lekérdezésem, mondjuk legyen ez csak annyi, hogy egy könyvtárban éppen bent van egy könyv vagy nincs, de mivel több 10.000 könyv is lehet egy könyvtárnak és több 1.000 olvasója is lehet tehát nagyon nagy adatbázison sokszor kerül végrehajtásra, akkor ezt az egyszerű eljárást érdemes tárolni?