---
title: "optimering av denna kod"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/63488-optimering-av-denna-kod"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "ampy"
published: "2002-12-31T12:17:37.000Z"
updated: "2003-01-02T21:20:39.000Z"
replies: 15
views: 388
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/63488-optimering-av-denna-kod"
---

# optimering av denna kod

## #1 — ampy, 2002-12-31T12:17Z

```
	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 MHz 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.

Permalänk: https://www.webforum.nu/p/63488

## #2 — Peeer, 2002-12-31T12:59Z

Re: optimering av denna kod

> **ampy skrev:**
>
> Denna kod tar 0,3 sekunder att utföra vilket jag tycker är ganska mycket på en server som har 2,2 **MHz** och 512 MB i minne.

:OO  ;) 

Nä, men allvarlig. Man brukar ju höra att [GetRows](http://www.webforum.nu/showthread.php?s=&postid=470242#post470242) är bra prestandamässigt. Kanske skulle ta en titt på det?

Permalänk: https://www.webforum.nu/p/899818

## #3 — ampy, 2002-12-31T13:01Z

Hehe, råkade skriva fel!  :e 

Ska testa med getrows.

Permalänk: https://www.webforum.nu/p/899819

## #4 — ampy, 2002-12-31T13:12Z

Testade nu med getrows och det tar ju ännu längre tid. Får 0,375 sek.

```
	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
			strDatat = rs.getrows()
			Datat = 1
		end if

	set rs = nothing

		if Datat = 1 then

			response.write 	"<font color='#000000'>" & _
					"<a title='"&strDatat(3,0)&"' href='showthread.asp?id="&strDatat(0,0)&"'>"
	
			subject = strDatat(3,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="&strDatat(1,0)&"'>"&strDatat(5,0)&"</a>" & _
					"<br><b><font color='#FF0000'>"&changetime(strDatat(2,0))&"</font>" & _
					"</b></font>"

			last_id = strDatat(6,0)
			thread_id = strDatat(0,0)
			thread_rum = strDatat(4,0)	
			antalsvar = strDatat(7,0)

		else
			response.write "<center><b>Aldrig</b></center>"
		end if
```

Permalänk: https://www.webforum.nu/p/899822

## #5 — Peeer, 2002-12-31T13:21Z

```
set rs = connect.execute(sql)

		if not rs.eof then
			strDatat = rs.getrows()
			Datat = 1
		end if
	[b]connect.close[/b]
	set rs = nothing
```

Vet inte om det hjälper, men prova vet ja!

Permalänk: https://www.webforum.nu/p/899827

## #6 — ampy, 2002-12-31T13:23Z

Det hjälper inte.

Permalänk: https://www.webforum.nu/p/899829

## #7 — Pace, 2002-12-31T13:24Z

Optimera din SQL-fråga istället.

Kör med [EXPLAIN](http://www.mysql.com/doc/en/EXPLAIN.html)\-syntaxen (MySQL) för att läsa av om alla index är satta i "join-skarvarna" så att säga.

Permalänk: https://www.webforum.nu/p/899831

## #8 — Brimba, 2002-12-31T14:47Z

> Jag har skapat index för de flesta kolumner.

 Det är ju inte så bra. 
Nu har jag inte arbetat med index i mySql, så jag vet inte hur det fungerar, men i SQLServer så beror det lite på om du väljer klustrat eller oklustrat index, och om du endast har unika poster i någon kolumn osv, men generellt sätt är det bra att indexera de kolumner som du ofta ställer WHERE-frågor mot.

Permalänk: https://www.webforum.nu/p/899920

## #9 — LarsG, 2002-12-31T17:13Z

Varför har du en outer join mellan members och forumposts? 

Om du har inlägg av icke medlemmar så kan du skapa en medlem som heter Gäst så kan du använda en vanlig join istället.

Permalänk: https://www.webforum.nu/p/899991

## #10 — ampy, 2002-12-31T17:24Z

Det går bra med en vanlig inner join också, vet inte varför jag skapade det på en gång.

Men koden tar fortfarande 0,375 sekunder att köra. 

Det där med EXPLAIN-syntaxen fattade jag ingenting av. :(

Permalänk: https://www.webforum.nu/p/899996

## #11 — LarsG, 2002-12-31T17:29Z

Du bör ha index på alla kolumner som du använder i join-villkoren. Om du tjänar på att ha index på rum beror på hur data är fördelat. Om nästan alla poster har värdet 2 i den kolumnen så hjälper ett index inte mycket.

Permalänk: https://www.webforum.nu/p/900000

## #12 — ampy, 2003-01-01T00:02Z

Kan någon förklara för mig vad EXPLAIN-syntaxen gör?

Fattade inte riktigt på MySQL's dokumentation.

Permalänk: https://www.webforum.nu/p/900226

## #13 — ampy, 2003-01-01T12:52Z

Märkte precis att:

```
order by fp.datum desc
```

Tar upp knappt två tiondelar. 
Jag har indexerat kolumen datum men kan man inte få ner det på ett annat sätt?

Permalänk: https://www.webforum.nu/p/900458

## #14 — LarsG, 2003-01-02T16:00Z

Har det någon betydelse för prestandan om du gör 

```
order by fp.datum asc
```

Permalänk: https://www.webforum.nu/p/901081

## #15 — crisse6, 2003-01-02T16:12Z

har du Dimmat da?

Permalänk: https://www.webforum.nu/p/901085

## #16 — ampy, 2003-01-02T21:20Z

LarsG: Nej.
crisse6: Ja.

Jag gjorde om sql-astsen så att den ser ut så här:

```
	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"
```

Och då fick jag ner det till 2 tiondelar.

Permalänk: https://www.webforum.nu/p/901257

---

Tråden på webben: https://www.webforum.nu/amne/asp/63488-optimering-av-denna-kod
