Pogledajte određenu poruku
Staro 12. 06. 2008.   #1
bluesman
Goran Pilipović
Sir Write-a-Lot
 
Avatar bluesman
 
Datum učlanjenja: 18.05.2005
Lokacija: Beograd
Poruke: 5.450
Hvala: 288
1.247 "Hvala" u 446 poruka
bluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušati
Pošaljite ICQ poruku za bluesman
Default mySQL prepared statement

Kada se pripremi i izvrsi statement, na primer:

PREPARE test FROM 'SELECT email FROM users WHERE id=?';
SET @u = 123;
EXECUTE test USING @u;
DEALLOCATE PREPARE test;

Racunam da ako se ne izvrši DEALLOCATE onda isti statement može da se koristi vise puta do kraja izvršenja scripta.

Da li se statement automatski dealocira (brise iz memorije) kada se zavrsi script, kao sto je slucaj sa connect, da se po zavrsetku scripta automatski radi disconnect (osim ako nije permanent connect)?

O koji brzinama govorimo, da li je ovakav statement značano sporiji od običnog "SELECT email FROM users WHERE id=123" ili je čak možda i brži?

Ako želim isti statement za različite varijable da koristim nekoliko puta za redom, da li značajno oduzima vreme sama akcija PREPARE ... SET... DEALLOCATE? Hoću da kažem da li je mnogo sporije ovako:

HTML kôd:
PREPARE test FROM 'SELECT email FROM users WHERE id=?';
SET @u = 123;
EXECUTE test USING @u;
DEALLOCATE PREPARE test;

// pa se onda radi nesto drugo pa se pozove:

PREPARE test FROM 'SELECT email FROM users WHERE id=?';
SET @u = 24;
EXECUTE test USING @u;
DEALLOCATE PREPARE test;

// pa se onda radi nesto drugo pa se pozove:

PREPARE test FROM 'SELECT email FROM users WHERE id=?';
SET @u = 931;
EXECUTE test USING @u;
DEALLOCATE PREPARE test;
od ovoga

HTML kôd:
PREPARE test FROM 'SELECT email FROM users WHERE id=?';
SET @u = 123;
EXECUTE test USING @u;

// pa se onda radi nesto drugo pa se pozove:

SET @u = 24;
EXECUTE test USING @u;

// pa se onda radi nesto drugo pa se pozove:

SET @u = 931;
EXECUTE test USING @u;

DEALLOCATE PREPARE test;
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman
I don't always know what I'm talking about but I know I'm right!
bluesman je offline   Odgovorite uz citat