<code> Noen få kjappe forslag jeg kommer på i farta: Det som tar mest tid i din kod är SQL frågan. Att använda siftror för att hämta fältvärden påverkar bara prestandan försumbart. Gör koden nästan omöjlig att läsa. Om du skall använda tal använd för gudsskull konstanter för talen!optimering av denna kod
sql = "select fp.id_trad, fp.user_id, fp.datum, ft.subject, ft.rum, m.username, fp.id, ft.svar " & _
"From forum_posts fp inner join forum_topics ft on fp.id_trad = ft.id_trad " & _
"left outer join members m on fp.user_id = m.id " & _
"where ft.rum = 2 " & _
"order by fp.datum desc"
set rs = connect.execute(sql)
if not rs.eof then
response.write "<font color='#000000'>" & _
"<a title='"&rs(3)&"' href='showthread.asp?id="&rs(0)&"'>"
subject = rs(3)
if len(subject) > 18 then
subject = left(subject,18)&"..."
end if
response.write server.htmlencode(subject) & _
"</a>" & _
"<br><b>Av:</b> "&rs(5)&"" & _
"<br><b><font color='#FF0000'>"&changetime(rs(2))&"</font>" & _
"</b></font>"
last_id = rs(6)
thread_id = rs(0)
thread_rum = rs(4)
antalsvar = rs(7)
else
response.write "<center><b>Aldrig</b></center>"
end if
set rs = nothing
</code>
Denna kod tar 0,3 sekunder att utföra vilket jag tycker är ganska mycket på en server som har 2,2 GHz och 512 MB i minne.
Så hur ska man kunna göra så att denna kod körs snabbare?
Några tips?
Jag har skapat index för de flesta kolumner.
Databas är MySQL.
Har även testat med metoden GetRows men då går det konstigt nog några tiondelar segare. Sv: optimering av denna kod
- Lagre rs(3) i en variabel, ettersom du bruker det flere ganger
- Åpne ditt recordset explicit og sett cursor til adOpenForwardOnly og lås til adLockReadOnly:
<code>rs.open(Connect, sqlString, adOpenForwardOnly, adLockReadOnly)</code>
- Bruk feltnavn og .value når du referer til et recordset
<code>rc.fields("user_id").value</code>
Forsøk å kjøre scriptet flere ganger, ettersom operativsystemet har lasta objekter i minnet.
Om det kan være til noen hjelp..
Mvh
TorgrimSv: optimering av denna kod
SQL frågan kan du försöka undvika onödiga tabellerna. Svårt att optimera SQL frågan om man inte känner till din datastruktur. Du kan oxå minska accesstiden med index.
Du har glömt att stänga ditt recordset. Bara för att du använder Execute metoden innebär inte att du slipper att stänga den. Du frigör resurser när du anropar close. Men påverkar inte enskilda anrop. Utan detta märks när server är tungt belastad.