Langsom sqlforespørgsel
HejsaHar følgende script, virker også helt fint efter hensigten, det som scriptet gør er at hente en masse data fra en sql server. Problemet er blot at scriptet tager næsten 1 minut for at blive ekskeveret. Har lidt på fornemmelsen af det er nogle af de loops der er. Er der nogen der kan evt. komme med et forslag til optimering af scriptet, har set mig lidt død på det.
<%
session.lcid=1030
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open = "DRIVER={SQL SERVER}; SERVER=webserver; database=; UID=; password="
fbold ="0,0,1,0,1000,0,1299,1,1300,0,1499,1,1899,1,1900,0,2000,0,2099,1,2100,0,2199,1,2200,0,2399,1,2400,0,2599,1,2900,0,2999,1,6000,0,6999,1,7300,0,7499,1,7500,0,7799,1,7800,1,7830,1,7899,1,7901,0,8000,0,8001,0,8199,1,8200,0,8205,0,8229,1,8299,1,8300,0,8301,0,8499,1,8500,0,8599,1,8600,0,8697,1,8800,0,8950,1,8990,1,8999,1,9000,0,9001,0,9099,1,9200,0,9201,0,9202,0,9299,1,9399,1,9400,0,9799,1,9800,0,9830,0,9850,1,9899,1,9925,1,9960,1,9999,0"
bold = split(fbold,",")
overs ="0,1,1000,1300,1900,2000,2100,2200,2400,2900,6000,7300,7500,8000,8200,8205,8300,8500,8600,8800,9000,9001,9200,9201,9202,9400,9800,1"
over = split(overs,",")
nullst = "1000,1300,1900,2100,2200,2400,2900,6000,7300,7500,8000,8200,8300,8500,8600,8800,9000,9200,9400,9800,0"
nulls = split(nullst,",")
sumto = "1299,1499,2099,2199,2399,2599,2999,6999,7499,7799,8199,8229,8499,8599,8697,8950,9099,9299,9799,9830,0"
sums = split(sumto,",")
dim vartabel(9999,3)
i = 0
P = 0
S = 0
n = 0
fradato = "'01.04.2005'"
tildato = "'31.05.2005'"
afd = 01
primofra = "'01.01.2005'"
primotil = "'31.03.2005'"
%>
<table width="800">
<%
SQL1 = "select konto, navn from budgetkonto order by konto"
Set RS = Conn.Execute(SQL1)
Do Until RS.EOF
SQL2 = "select sum(belob) as bev from journaltotal where valdato>=" & fradato & " and valdato<=" & tildato & " and sel=0 and afd=" & afd & " and konto=" & rs("konto")
Set RS2 = Conn.Execute(SQL2)
SQL3 = "select sum(belob) as primo from journaltotal where valdato>=" & primofra & " and valdato<=" & primotil & " and sel=0 and afd=" & afd & " and konto=" & rs("konto")
Set RS3 = Conn.Execute(SQL3)
varkonto = Cint(rs("konto"))
varbold = Cint(bold(i))
varover = cint(over(p))
varblank = cint(bold(i+1))
varnull = cint(nulls(n))
varsum = cint(sums(s))
%>
<tr>
<%
do until rs2.eof
primo = 0
bev= 0
if isnull(rs2("bev")) then
bev = 0
else
bev = rs2("bev")
end if
'find primo
'
do until rs3.eof
if isnull(rs3("primo")) then
primo = 0
else
primo = rs3("primo")
end if
rs3.movenext
loop
ultimo = bev + primo
sumprimo = sumprimo + primo
sumbev = sumbev + bev
sumultimo = sumultimo + ultimo
' vartabel used for totals
if varkonto = varsum then
vartabel(varkonto,1) = sumprimo
vartabel(varkonto,2) = sumbev
vartabel(varkonto,3) = sumultimo
primo2 = formatnumber(sumprimo,2)
ultimo2 = formatnumber(sumultimo,2)
bev2 = formatnumber(sumbev,2)
s= s+1
else
vartabel(varkonto,1) = primo
vartabel(varkonto,2) = bev
vartabel(varkonto,3) = ultimo
bev2 = formatnumber(bev,2)
primo2 = formatnumber(primo,2)
ultimo2 = formatnumber(ultimo,2)
end if
' nulstil sumtotal
if varnull = varkonto then
sumprimo = 0
sumbev = 0
sumultimo = 0
n = n+1
end if
if varbold = varkonto then
i = i+2
response.write "<td><b>" & RS("konto") & ("</td><td><b>") & RS("navn") & ("</b></td>")
if varbold = varover then
p = p+1
else
' indtægter ialt
if varkonto = 1899 then
primo = vartabel(1299,1) + vartabel(1499,1)
bev = vartabel(1299,2) + vartabel(1499,2)
ultimo= vartabel(1299,3) + vartabel(1499,3)
primo2 = formatnumber(primo,2)
bev2 = formatnumber(bev,2)
ultimo2= formatnumber(ultimo,2)
vartabel(varkonto,1) = primo
vartabel(varkonto,2) = bev
vartabel(varkonto,3) = ultimo
end if
if varkonto = 7800 then
primo = vartabel(1899,1) + vartabel(2099,1) + vartabel(2199,1) + vartabel(2399,1) + vartabel(2599,1) + vartabel(2999,1) + vartabel(6999,1) + vartabel(7499,1) + vartabel(7799,1)
bev = vartabel(1899,2) + vartabel(2099,2) + vartabel(2199,2) + vartabel(2399,2) + vartabel(2599,2) + vartabel(2999,2) + vartabel(6999,2) + vartabel(7499,2) + vartabel(7799,2)
ultimo = vartabel(1899,3) + vartabel(2099,3) + vartabel(2199,3) + vartabel(2399,3) + vartabel(2599,3) + vartabel(2999,3) + vartabel(6999,3) + vartabel(7499,3) + vartabel(7799,3)
primo2 = formatnumber(primo,2)
bev2 = formatnumber(bev,2)
ultimo2= formatnumber(ultimo,2)
vartabel(varkonto,1) = primo
vartabel(varkonto,2) = bev
vartabel(varkonto,3) = ultimo
end if
if varkonto = 7830 then
primo = vartabel(7800,1)
bev = vartabel(7800,2)
ultimo = vartabel(7800,3)
primo2 = formatnumber(primo,2)
bev2 = formatnumber(bev,2)
ultimo2= formatnumber(ultimo,2)
vartabel(varkonto,1) = primo
vartabel(varkonto,2) = bev
vartabel(varkonto,3) = ultimo
end if
if varkonto = 7899 then
primo = vartabel(7800,1)
bev = vartabel(7800,2)
ultimo = vartabel(7800,3)
primo2 = formatnumber(primo,2)
bev2 = formatnumber(bev,2)
ultimo2= formatnumber(ultimo,2)
vartabel(varkonto,1) = primo
vartabel(varkonto,2) = bev
vartabel(varkonto,3) = ultimo
end if
if varkonto = 8299 then
primo = vartabel(8199,1) + vartabel(8229,1)
bev = vartabel(8199,2) + vartabel(8229,2)
ultimo = vartabel(8199,3) + vartabel(8229,3)
primo2 = formatnumber(primo,2)
bev2 = formatnumber(bev,2)
ultimo2= formatnumber(ultimo,2)
vartabel(varkonto,1) = primo
vartabel(varkonto,2) = bev
vartabel(varkonto,3) = ultimo
end if
if varkonto = 8990 then
primo = vartabel(8499,1) + vartabel(8599,1) + vartabel(8697,1) + vartabel(8950,1)
bev = vartabel(8499,2) + vartabel(8599,2) + vartabel(8697,2) + vartabel(8950,2)
ultimo = vartabel(8499,3) + vartabel(8599,3) + vartabel(8697,3) + vartabel(8950,3)
primo2 = formatnumber(primo,2)
bev2 = formatnumber(bev,2)
ultimo2= formatnumber(ultimo,2)
vartabel(varkonto,1) = primo
vartabel(varkonto,2) = bev
vartabel(varkonto,3) = ultimo
end if
if varkonto = 8999 then
primo = vartabel(8299,1) + vartabel(8990,1)
bev = vartabel(8299,2) + vartabel(8990,2)
ultimo = vartabel(8299,3) + vartabel(8990,3)
primo2 = formatnumber(primo,2)
bev2 = formatnumber(bev,2)
ultimo2= formatnumber(ultimo,2)
vartabel(varkonto,1) = primo
vartabel(varkonto,2) = bev
vartabel(varkonto,3) = ultimo
end if
if varkonto = 9399 then
primo = vartabel(9299,1)
bev = vartabel(9299,2)
ultimo = vartabel(9299,3)
primo2 = formatnumber(primo,2)
bev2 = formatnumber(bev,2)
ultimo2= formatnumber(ultimo,2)
vartabel(varkonto,1) = primo
vartabel(varkonto,2) = bev
vartabel(varkonto,3) = ultimo
end if
if varkonto = 9850 then
primo = vartabel(9399,1) + vartabel(9799,1)
bev = vartabel(9399,2) + vartabel(9799,2)
ultimo = vartabel(9399,3) + vartabel(9799,3)
primo2 = formatnumber(primo,2)
bev2 = formatnumber(bev,2)
ultimo2= formatnumber(ultimo,2)
vartabel(varkonto,1) = primo
vartabel(varkonto,2) = bev
vartabel(varkonto,3) = ultimo
end if
if varkonto = 9899 then
primo = vartabel(9099,1) + vartabel(9850,1)
bev = vartabel(9099,2) + vartabel(9850,2)
ultimo = vartabel(9099,3) + vartabel(9850,3)
primo2 = formatnumber(primo,2)
bev2 = formatnumber(bev,2)
ultimo2= formatnumber(ultimo,2)
vartabel(varkonto,1) = primo
vartabel(varkonto,2) = bev
vartabel(varkonto,3) = ultimo
end if
if varkonto = 9925 then
primo = vartabel(7899,1)
bev = vartabel(7899,2)
ultimo = vartabel(7899,3)
primo2 = formatnumber(primo,2)
bev2 = formatnumber(bev,2)
ultimo2= formatnumber(ultimo,2)
vartabel(varkonto,1) = primo
vartabel(varkonto,2) = bev
vartabel(varkonto,3) = ultimo
end if
if varkonto = 9960 then
primo = vartabel(8999,1) - vartabel(9899,1)
bev = vartabel(8999,2) - vartabel(9899,2)
ultimo = vartabel(8999,3) - vartabel(9899,3)
primo2 = formatnumber(primo,2)
bev2 = formatnumber(bev,2)
ultimo2= formatnumber(ultimo,2)
vartabel(varkonto,1) = primo
vartabel(varkonto,2) = bev
vartabel(varkonto,3) = ultimo
end if
if varkonto = 9999 then
primo = vartabel(9925,1) + vartabel(9960,1)
bev = vartabel(9925,2) + vartabel(9960,2)
ultimo = vartabel(9925,3) + vartabel(9960,3)
primo2 = formatnumber(primo,2)
bev2 = formatnumber(bev,2)
ultimo2= formatnumber(ultimo,2)
vartabel(varkonto,1) = primo
vartabel(varkonto,2) = bev
vartabel(varkonto,3) = ultimo
end if
response.write "<td align=right><b>" & primo2 & ("</td><td align=right><b>") & bev2 & ("</td><td align=right><b>") & ultimo2 & "</b></td>"
end if
else
if primo = 0 and bev = 0 then
else
response.write "<td>" & RS("konto") & ("</td><td>") & RS("navn") & ("</td>")
response.write "<td align=right>" & primo2 & ("</td><td align=right>") & bev2 & ("</td><td align=right>") & ultimo2 & "</td>"
end if
end if
RS3.Close
RS2.movenext
loop
Response.write "</tr>"
if varblank = 1 and varbold = varkonto then
response.write "<tr><td><br></td></tr>"
end if
RS2.close
RS.movenext
Loop
RS.close
Conn.Close
%>
</table>
