webForumDet fria alternativet

UPDATE som tar för lång tid på sig.

Databaser & SQL

6 svar · 315 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Hej!
Jag har ett script som jobbar mot Access.

ansMont  = FixSQL(Request.Form("Hiss_Ans_Montor"))
hissArea = FixSQL(Request.Form("Hiss_Area"))

sSql =	"UPDATE tbl_hiss SET " &_
	"Hiss_Ans_Montor = '" & ansMont & "' " &_
	"WHERE Hiss_Area = '" & hissArea & "'"

Set oRec = oConn.Execute(sSql)
Set oRec = Nothing
Response.reDirect("?mP=print")

Ovanstående funkar bra i sig, men det tar för lång tid för det att slutföra.
Det är många poster jag ska ändra samtidigt, det kan vara allt från 50 upp till 200.

Så, jag undrar hur jag ska göra för att få det är gå snabbare, jag kanske har gjort på helt fel sätt?

Tack!

Medlem sedan juni 200032 967 inlägg
#2

Till att börja med ska du ju inte skapa något recordset. Du hämtar ju inget data, eller hur?

Byt:

Set oRec = oConn.Execute(sSql)
Set oRec = Nothing

mot:

oConn.Execute sSQL,,128

Hur lång tid är för lång tid? Hur många poster ligger i tabellen?

Medlem sedan dec. 200012 464 inlägg
#3

Indexera kolumnen hiss_area.

Medlem sedan feb. 20034 441 inlägg
#4

@nders skrev:

Byt:

Set oRec = oConn.Execute(sSql)
Set oRec = Nothing

mot:

oConn.Execute sSQL,,128

Klart!

@nders skrev:

Hur lång tid är för lång tid?

Nu håller jag på att uppdatera 64 poster, det har gått 7 minuter och det är inte klart än, är inte det för lång tid?

@nders skrev:

Hur många poster ligger i tabellen?

Det är (har blivit med tiden) en ganska stor.
Det är 15 kolumner med >1400 rader, alltså ca. 21.000 poster och det är Access.

Har funderat på att byta dbms till MySQL, tycker du att det är läge?

Medlem sedan feb. 20034 441 inlägg
#5

LarsG skrev:

Indexera kolumnen hiss_area.

Aha ok, det kanske kan snabba på det lite.
Får göra det vid ett annat tillfälle, har inte tillgång till Access just nu.

Medlem sedan dec. 20003 563 inlägg
#6

Rader är samma sak som poster i access. Du har alltså 1400 poster.
Sju minuter är en indikation på att något är fel. Det är alldeles för lång tid nästan oberoende av system. Testa indexera men kör också en komprimering/reparering.

Angående byte till mySql så visst kan du göra det men det kommer inte bli någon större prestandaskillnad p.g.a. storleken på databasen. Access klarar 1400 poster och mycket mer därtill. Snarare ska bytet bero på antal besökare. Ämnet har diskuterats i ett antal access vs mysql-trådar.

Medlem sedan feb. 20034 441 inlägg
#7

Aha, ok.
Avvaktar med ett ev. byte då, men indexeringen känns nödvändig.
Det konstiga är att när jag uppdaterar sidan innan scriptet körts klart, så verkar det ändå som om allt uppdaterats, men då ska ju sidan laddas om per automatik.

Men jag nöjer mig med dom svar jag fått, tack!

275 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
145 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)