Hejsan.
Jag har en kod på min startsida som visar dom senaste forumposterna. Länge har startsidan varit trög, och jag har funderat på vad som har varit fel. Jag fick fram det nu när jag bestämde mig för att lägga in alla funktioner igen, tog bort och lade till funktionerna igen för att se vad som gick snabbast.
Jag kom till att det var koden som visade dom senaste forumposterna.
Koden ni ser nedan är den jag använder, jag dimmar alla variablarna och tycker att jag försökt göra det så smidigt som möjligt.
Men det bör väll gå att göra koden mycket smidigare? Eller?
Ups, det där med datumen kan du hoppa över, en grej som blivit kvar när jag inte använd mig av Greatest (kolla i första inlägget för att se redigeringen).
NowOnForm ser ut så här:
Function NowOnForm(text)
text = server.HTMLEncode(text)
text = Replace(text,vbCrLf,"<br>")
NowOnForm = text
End Function
Och är bara en vanlig funktion, och bör inte påverka.
Erik Juhlin skrev:
Har troligen inget med ASP-koden att göra utan SQL-koden.
Vad kör du med för databas?
Lite index skulle kanske hjälpa...
Kör på Mysql. Kolla länken som jag angivet innan. Tog bort den koden som jag visar längst upp.
Ganska mysko att det kan vara så stor skillnad? Därför tycker jag det räcker långt ;)
Tack, ca 5-10 sek, men inte riktigt bra, eftersom hela sidan dyker upp på en gång, dvs det verkar inte hända något alls, men det gör det till sist.
Verkar fungera bättre efter ett tag, lär sig IE?
Då undrar jag som Erik Juhlin över databasen istället!
Tack, ca 5-10 sek, men inte riktigt bra, eftersom hela sidan dyker upp på en gång, dvs det verkar inte hända något alls, men det gör det till sist.
Verkar fungera bättre efter ett tag, lär sig IE?
Då undrar jag som Erik Juhlin över databasen istället!
Ehm, jag kan väll inte säga mer än Mysql som svar till det? =/
Prova att bara köra sql strängen mot databasen och se hur lång tid den tar att exekveras.
La in koden:
strSql = "select t.fID, t.Rubrik, t.svDatum, t.inlagg, greatest(max(s.datum),t.SvDatum) as Senaste, count(s.svID) as AntalSvar from forumet t left join forumsv s on (s.Tillid=t.fID) group by t.fID, t.Rubrik order by Senaste desc limit 10"
Set rs = objCon.execute(strSql)
rs.close:Set rs=nothing
Jag säger som Erik Juhlin, kolla över nycklar och index i databastabellerna...
Jag antar att forumet.fID och forumsv.svID är satta som primärnycklar på respektive tabell?
Och så bör väl forumsv.Tillid vara indexerad.
Om det saknas nycklar eller index så kan sql-frågorna bli apslöa när det kommit in lite data i tabellerna nämligen.
Wow! Vilken jädrans skillnad det blev nu. Har bara använt Mysql i några månader, så jag har inte lärt mig alla dens hemligheter ännu. Men jag tackar så himmla mycket för hjälpen!
Fattar fortfarande inte att det kunde bli en så stor skillnad :p
Har inte MySql något motsvarande Profilern som finns till SQL Server? Alltså ett verktyg där man kan övervaka vilka SQL frågor som körs, hur lång tid de tar o.s.v.
Har använt det till en del system för att hitta tunga SQL-frågor och sen bara satt in lämpliga index. Har hjälpt mycket för prestandan! :)
808 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e