Går det inte om du avgränsar frågorna med ; och sen lista igenom recordseten?
Det går med MSSQL och ASP.
7 svar · 631 visningar · startad av yador
Hejsan!
Kan man skicka in flera st sql frågor till mysql samtidigt via någon funktion i php? Just nu har jag nämligen en efter en, men att anropa mysql massor gånger i rad känns som man förlorar onödig prestanda då den måste anropas flera gånger. Det vore ju bättre om man på direkten kunde skicka in alla frågor på en rad och sedan få tillbaka t.ex resultatet via en array.
Tack på förhand!
Går det inte om du avgränsar frågorna med ; och sen lista igenom recordseten?
Det går med MSSQL och ASP.
Det kanske är UNION du söker?
UNION is used to combine the result from multiple SELECT statements into a single result set.
Jag hittade http://se.php.net/manual/en/mysqli.multi-query.php som verkar göra det jag vill precis :) Undrar bara en sak, vet någon hur stor prestanda ökning det egentligen är? Förstår att det beror på hur många frågor man ska ställa till databasen, men om vi säger att det är 10 st, hur mycket snabbare är då denna funktionen mot att ställa enbart vanliga frågor via mysqli->query()?
Stored Procedures är ju också ett alternativ. Har dock inte så bra koll på hur bra mySQL hanterar det gällande prestanda.
Hur ser din applikation ut? Är det samma fråga som skickas flera gånger eller är det en rad olika frågor? Om det är olika så tror jag inte du har så mycket att vinna på att slå ihop och skicka flera stycken samtidigt. Det ser bara illa ut i koden. Det är väl att öppna själva databasanslutningen som kan ta tid så se till att du bara gör det en gång.
Prepared statements är snabbare om det är samma fråga (med olika parametrar) som ska skickas upprepade gånger: http://se2.php.net/manual/en/pdo.prepare.php
Om du har enskilda frågor som tar väldigt lång tid kan du antingen försöka optimera sql frågan, se över dina index i databasen eller cacha resultatet så att den inte behöver anropa databasen överhuvudtaget.
Stored Procedures verkar intressant, ska kolla lite vidare på det :)
pulse
Det är för det mesta samma frågor, men med olika parametrar. Det med prepared statements kan jag också kolla upp vidare. Jag vet att jag cacha resultatet, men via min personliga smak så vill jag ha ny färsk data :)
Jag tackar för all hjälp, jag accepterar mitt föregående inlägg som slutgiltigt svar.
yador skrev:
Undrar bara en sak, vet någon hur stor prestanda ökning det egentligen är? Förstår att det beror på hur många frågor man ska ställa till databasen, men om vi säger att det är 10 st, hur mycket snabbare är då denna funktionen mot att ställa enbart vanliga frågor via mysqli->query()?
Frågorna körs ju oavsett om du skickar 10 st. query() eller ett enda anrop.
Så jag ser ingen mening med det. Men visst, du kanske sparar några byte i bandbredd mellan webbservern och sql-servern, men vinsten är nog obefintlig.