---
title: "Den optimala hämtningen"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/10074-den-optimala-hämtningen"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Jörgen HP"
published: "2001-06-15T00:00:00.000Z"
updated: "2001-06-15T15:23:00.000Z"
replies: 7
views: 206
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/10074-den-optimala-hämtningen"
---

# Den optimala hämtningen

## #1 — Jörgen HP, 2001-06-15T00:00Z

tja!

Läste en intressant artikel i DMZ som kom idag om att optimera ASP-kod. Artiklen hette "Att skriva effektiv ASP" och kändes nyttig för mig.

I ett avsnitt togs det upp ett ämne som diskuterats ganska hett här från och till. Tänkte dela med mig till er, deras synpunkt på den optimala hämtningen från en databas.

```

<%
Const adOpenForwardOnly = 0
Const adLockReadOnly = 1
Const adCmdText = &H0001

strConn = "DSN=bla ha bla ha"
Set objConn = Server.CreateObject("ADOdb.Connection")
Set objRS = Server.CreateObject("ADOdb.Recordset")

objconn.Open(strConn)
objRS.Open(strSQL, strConn, AdOpenForwardOnly, AdlockReadOnly, AdCmdText)

strSQL = "SELECT req_Username, Req_Email, LastVisit " & _
"FROM Profil " & _
"ORDER BY req_Username DESC"

arrMyData = objRS.GetRows()

objRS.Close()
Set objRS = Nothing
objConn.Close()
Set objConn = Nothing 

%>
```

En kort förklaring till varför just denna var den optimala kommer här:

1) Den öppna databaskopplingen skickas som argument till Openmetoden av recsetobjectet. Fördel: Det kommer aldrig finnas 2 kopior av recordsetet i minnet, vilket alltid blir fallet om man använder execute metoden.

2) Användandet av konstanter i recordset-objecten. I form av AdOpenForwardOnly, AdlockReadOnly, AdCmdText. Enligt källan den snabbaste typen av cursor man kan öppna.

Detta blev mkt kort, men jag orkade inte skriva längre.

Källa: Artikeln "Att skriva effektiv ASP" från DMZ.

vänligen Jörgen

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

## #2 — nakoz, 2001-06-15T00:16Z

fan då, sådär skulle de inte riktigt sett ut om jag fått bestämma.. :)
intressant iallafall..

vet du hur de har utfört testen?
hade de nån jämförelse på olika öppningstyper?

mvh.

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

## #3 — Vide, 2001-06-15T06:36Z

Hmm... nä, det där tycker inte jag ser optimalt ut, varken ur kodarsynpunkt eller prestanda, jag skulle nog säga att detta är mer optimalt:

```
<%
strSQL = "SELECT req_Username, Req_Email, LastVisit FROM Profil ORDER BY req_Username DESC"
strConn = "DSN=bla"
Set objConn = Server.CreateObject("ADOdb.Connection")
objconn.Open strConn
arrMyData = objConn.Execute(strSQL).GetRows()
objConn.Close()
Set objConn = Nothing
%>
```

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

## #4 — Janspeed, 2001-06-15T07:09Z

Det jag undrar är hur du gör två sökningar om du använder objRS.Open för att öppna ett recordset? Och om det går vad är då execute fortfarande det snabbaste sättet?

/JANspeed

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

## #5 — Toonster, 2001-06-15T09:44Z

Håller med Vide.
Recordset skall man endast försöka använda sig av när man behöver låsa poster, och man behöver kunna stega valfritt mellan dom.
Ska man bara hämta data är Recordset helt onödigt.

Rent prestandamässigt så är det väl bara att testa.. :-)

/T

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

## #6 — jorgen, 2001-06-15T11:01Z

Glömde en liten detalj. 
3) Det är enbart vid select man har nytta av att skapa ett recordset, vid update, insert och delete behövs inte detta. På grund av att man inte har nytta av ett tomt recordset. Och då kunde man med fördel skriva:

```

Set objConn = Server.CreateObject("ADOdb.Connection")

With objConn
.open strConn
.Execute
strSQL, intRecs, AdCmdText + adExecuteNoRecords
.Close
End With
Set objConn = Nothing
```

Jag vet inte, jag är inte så hemma i ASP än så länge, men det är en intressant sak att diskutera.

mvh

Jörgen

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

## #7 — rymdknark, 2001-06-15T11:47Z

<http://script.webforum.nu/wf/Forum1/HTML/000064.html>

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

## #8 — Vide, 2001-06-15T15:23Z

> Det är enbart vid select man har nytta av att skapa ett recordset, vid update, insert och delete behövs inte detta. På grund av att man inte har nytta av ett tomt recordset.

Jag hoppas ingen har sagt något annat... :)

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/10074-den-optimala-hämtningen
