Just nu i M3-nätverket
Gå till innehåll

optimering av denna tråd


ampy

Rekommendera Poster

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> <a href='krypin.asp?id="&rs(1)&"'>"&rs(5)&"</a>" & _
			"<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

 

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.

 

 

 

[inlägget ändrat 2003-01-01 13:53:29 av ampy]

Länk till kommentar
Dela på andra webbplatser

Att dimma variablerna brukar hjälpa rätt mycket. Då skriver man:

 

OPTION EXPLICIT

(betyder att scriptet ska ge felmeddelande om det är någon variabel man inte fått med)

 

Dim variabel1, variabel2, ...

 

Länk till kommentar
Dela på andra webbplatser

Magnus Gladh

Har du tagit tiden i MySQL eller på din ASP-sida.

 

Själv hade jag stora prestandaproblem med MySQL och då var det ODBCkopplingen som var boven. En fråga som tog några millisekunder i MySQL tog via ODBC koplingen upp till 1 sekund att visa på ASP-sidan.

 

Ibland är getrows snabbare än .movenext dock inte alltid. Kolla på http://www.gladh.nu/asphelp där jag gjort ett litet test emellan dem.

 

- Magnus

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

Länk till kommentar
Dela på andra webbplatser

Hej,

 

Jag undrar också hur du mätt tiden. I ASP kan man endast mäta på sekunder så du måste ha instansierat någon typ av komponent vilket säkert lägger till exekveringstiden.

 

Du kan väl posta hela koden så kanske vi kan klura lite mer.

 

/foo

 

Länk till kommentar
Dela på andra webbplatser

start = timer()


sql = "select fp.id_trad, fp.user_id, fp.datum, ft.subject, ft.rum, m.username, fp.id, ft.svar " & _
"From forum_topics ft inner join forum_posts fp on ft.id_trad = fp.id_trad " & _
"inner join members m on fp.user_id = m.id " & _
"where ft.rum = 2 " & _
"order by ft.senasteinlagg desc, fp.datum desc"

set rs = connect.execute(sql)

	if not rs.eof then

		subject = rs(3)

		response.write 	"<font color='#000000'>" & _
				"<a title='"&subject&"' href='showthread.asp?id="&rs(0)&"'>"


			if len(subject) > 18 then
				subject = left(subject,18)&"..."
			end if

		response.write 	server.htmlencode(subject) & _
				"</a>" & _
				"<br><b>Av:</b> <a href='krypin.asp?id="&rs(1)&"'>"&rs(5)&"</a>" & _
				"<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

rs.close
set rs = nothing
stopp = timer()

response.write "<br><br><br>" & stopp - start 

 

Som ni ser har jag gjort om sql-satsen, nu kom jag ner till två tiondelar.

Tiden har jag mätt med funktioner timer() som ni ser i koden.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...