Just nu i M3-nätverket
Jump to content

optimering av denna tråd


ampy

Recommended Posts

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]

Link to comment
Share on other sites

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, ...

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...