FAQ |
Kalender |
|
![]() |
#1 | ||
|
|||
Mycket flitig postare
|
Jag tror inte du kan använda IF-satser i Mysql om du inte har dem i en funktion. Då får du istället bryta ut koden till separata sql-frågor och göra if-satserna i din applikation istället för i databasen:
Jag skall försöka ge mig på en tolkning av din mix av .NET-kod och SQL till en pseudo-variant. "ExecuteSql" nedan är bara en placeholder för vad du nu har för att exekvera sql-kod. Kod:
var count = ExecuteSql("SELECT COUNT(*) FROM IF_sessions WHERE session_name = '" + sSession_name + "' AND session_id = '"+ sSession_id + "'"); if (count == 0) { ExecuteSql("INSERT INTO IF_sessions(session_id, created, expires, session_name, session_data) Values('" + sSession_id + "', NOW(), '" + System.DateTime.Now.AddHours(2) + "', '" + sSession_name + "', '" + sSession_data + "') " } else { ExecuteSql("UPDATE IF_sessions SET expires = NOW(), session_data = '" + sSession_data + "' WHERE session_id = '" + sSession_id + "' AND session_name = '"+ sSession_name + "'") } |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Mycket flitig postare
|
Citat:
|
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Har WN som tidsfördriv
|
Det betyder inte att det blir snabbare för det. Skall du hålla på och extremoptimera (behövs antagligen inte alls) kan du börja med att skriva om det till Stored Procedure.
|
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Mycket flitig postare
|
Citat:
Ett sätt att optimera är som jayzee skriver att göra en Stored Procedure. En annan variant är att göra primary key till "SESSION_ID + SESSION_NAME" och sen använda INSERT INTO ... ON DUPLICATE KEY UPDATE http://dev.mysql.com/doc/refman/5.1/...duplicate.html Kod:
INSERT INTO IF_sessions(session_id, created, expires, session_name, session_data) Values('...', ..., '...', '...', '....') ON DUPLICATE KEY UPDATE expires = '...', session_data = '...' |
||
![]() |
![]() |
Svara |
|
|