Avatar billede kagge Nybegynder
17. marts 2004 - 10:38 Der er 5 kommentarer og
1 løsning

Performance forslag 1/forslag 2

Lige et performancespørgsmål:

Hvis man f.eks. har 10 fuldstændig ens selectmenuer, som henter options fra en database hvad er så mest hensigtsmæssigt at gøre:

1)

<SELECT NAME="kode1" onChange="select_kode1(this.selectedIndex)">
<OPTION></OPTION>
<%

Dim recordSet25
Dim strSQL25

set recordSet25 = server.CreateObject("ADODB.Recordset")

strSQL25 = "SELECT distinct(Hovedkodenr), Hovedkodenavn From Korekortkoder ORDER BY Hovedkodenr"
set recordSet25 = forbindelse.Execute(strSQL25)

do until recordSet25.eof

if koder(0) = recordSet25("Hovedkodenr") Then
Response.Write "<option value=" & recordSet25("Hovedkodenr") & " selected>" & recordSet25("Hovedkodenavn") & "</option>"
Else
Response.Write "<option value=" & recordSet25("Hovedkodenr") & ">" & recordSet25("Hovedkodenavn") & "</option>"
end if

recordSet25.movenext
loop
recordSet25.Close

Set recordSet25 = Nothing

%>
</SELECT>

<SELECT NAME="kode2" onChange="select_kode2(this.selectedIndex)">
<OPTION></OPTION>
<%

Dim recordSet26
Dim strSQL26

set recordSet26 = server.CreateObject("ADODB.Recordset")

strSQL26 = "SELECT distinct(Hovedkodenr), Hovedkodenavn From Korekortkoder ORDER BY Hovedkodenr"
set recordSet26 = forbindelse.Execute(strSQL26)

do until recordSet26.eof

if koder(1) = recordSet26("Hovedkodenr") Then
Response.Write "<option value=" & recordSet26("Hovedkodenr") & " selected>" & recordSet26("Hovedkodenavn") & "</option>"
Else
Response.Write "<option value=" & recordSet26("Hovedkodenr") & ">" & recordSet26("Hovedkodenavn") & "</option>"
end if

recordSet26.movenext
loop
recordSet26.Close

Set recordSet26 = Nothing

%>
</SELECT>

OSV.
OSV.
OSV.
OSV.

ELLER

2)

<SELECT NAME="fejlnrhoved">
<OPTION></OPTION>
<%

Dim recordSet18
Dim strSQL18

set recordSet18 = server.CreateObject("ADODB.Recordset")

strSQL18 = "SELECT distinct(Hovedfejlnr), Hovedfejlnavn, Sorteringhoved From Fejlkoder ORDER BY Sorteringhoved"
set recordSet18 = forbindelse.Execute(strSQL18)

do until recordSet18.eof

if xxxx = recordSet18("Hovedfejlnr") Then
Response.Write "<option value=" & recordSet18("Hovedfejlnr") & " selected>" & recordSet18("Hovedfejlnavn") & "</option>"
Else
Response.Write <option value=" & recordSet18("Hovedfejlnr") & ">" & recordSet18("Hovedfejlnavn") & "</option>"
end if

recordSet18.movenext
loop
recordSet18.movefirst
%>


</SELECT>

<SELECT NAME="fejl2">
<%
do until recordSet18.eof

if xxxx = recordSet18("Hovedfejlnr") Then
Response.Write "<option value=" & recordSet18("Hovedfejlnr") & " selected>" & recordSet18("Hovedfejlnavn") & "</option>"
Else
Response.Write "<option value=" & recordSet18("Hovedfejlnr") & ">" & recordSet18("Hovedfejlnavn") & "</option>"
end if

recordSet18.movenext
loop
%>
</SELECT>

OSV.
OSV.
OSV.
OSV.

Jeg kan jo næsten regne ud at performancemæssigt er forslag 2 vel det optimale, da man jo kun laver sin strSQL 1 gang og dermed arbejder med 1 recordset mens man i forslag 1 laver sin strSQL 10 gange og arbejder med 10 recordSets.

Men er der nogle farer/ulemper ved kun at arbejde med 1 recordset og først lukke det når alle 10 selectmenuer er lavet eller hvad?

Er der meget at hente rent performancemæssigt ved at bruge forslag 2 i stedet for forslag 1?
Avatar billede avlund Nybegynder
17. marts 2004 - 10:40 #1
Du har for så vidt sagt det hele selv. Ti databaseforbindelser/-kald er en ret dårlig løsning. Du bør helt klart bruge option 2 - evt. i et for-loop.
Avatar billede kagge Nybegynder
17. marts 2004 - 10:54 #2
-> avlund

Tak for det hurtige svar :)

Andre er stadig velkomne til at poste nogle guldkorn eller andre kommentarer.
Avatar billede kagge Nybegynder
17. marts 2004 - 10:56 #3
Hvorfor dælen kan jeg ikke acceptere dit svar, så du får point
Avatar billede thesurfer Nybegynder
17. marts 2004 - 11:36 #4
Du skal *først* markere navnet, og derefter klikke på Accepter-knappen :-)
Avatar billede kagge Nybegynder
17. marts 2004 - 12:05 #5
OK. Takker
Avatar billede avlund Nybegynder
17. marts 2004 - 15:01 #6
Selv tak, og tak for points!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester