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?