Avatar billede hanne-rk Nybegynder
19. september 2003 - 00:36 Der er 9 kommentarer og
1 løsning

hastighed på søgning

jeg har en database med 2000 varer, hvorstor er tidsforskellen på en søgning om man søger i en tekst kolonne eller en tal kolonne ?

jeg skal lige sige at der er et "and" med i søgningen, så der er 2 kriterier som skal matches.

Jeg har tekst kolonne nu, og har en søgetid på ca. 20 sekunder, hvilket jeg synes er helt vildt meget.

Vil det forbedres meget hvis jeg ændrer til en tal kolonne (og ændrer alle varenumre til tal)
Avatar billede erikjacobsen Ekspert
19. september 2003 - 08:12 #1
Hvad søger du på?  WHERE vare='gummistøvler'  eller  WHERE vare LIKE '%gummi%'
Har du index på feltet du søger på?
Avatar billede hanne-rk Nybegynder
19. september 2003 - 10:03 #2
jeg søger varen på denne måde : (var mig et kæmpe problem at lave, så jeg fik lidt expertbestand)

http://www.eksperten.dk/spm/402449
Avatar billede erikjacobsen Ekspert
19. september 2003 - 10:07 #3
Jeg er ikke helt sikker på jeg kan gennemskue hvad der foregår i koden
i det spørgsmål. Hvilken SQL sætning er det der går for langsomt?
Avatar billede hanne-rk Nybegynder
19. september 2003 - 11:15 #4
jeg mener det er denne

  strSQL = "Select * from Varer where gruppe='"& kode&"' AND foto = '" & billedeList("foto") & "'"


men ok, den skal også hente en vare og tjekke om der er andre varer som har samme foto, og så liste dem også, og derefter gå videre til næste foto.
Avatar billede erikjacobsen Ekspert
19. september 2003 - 11:22 #5
Den fik jeg ikke helt. Er billedeList et recordset fra en anden SELECT?,
og så laver du en ny select for hver indgang? Du skal da til at have lavet
éen SELECT med en join. Men hvis jeg skal gøre det for dig skal jeg lige
have fortalt hvad der står i dine tabeller, og hvad du egentlig skal have ud.
Avatar billede hanne-rk Nybegynder
19. september 2003 - 12:44 #6
kort forklaring på hvad jeg skal bruge den til :
Jeg er ved at lave en webshop, hvor der er ca 2000 varenumre, nogle af disse bruger samme billede, derfor skal de vises sammen med dette billede alle sammen (ca. 1-8 varer pr. foto)
Der skal altså først sorteres efter et menupunkt (6 forskellige varegrupper 1-6) derefter skal de listes i en tabel med tilhørende foto.
Præsis som de gør i nedenstående script.
Eneste problem med dette script er, at det tager viiildt lang tid at generere siden, dvs. op til ½ minut, så der er megen ventetid når man klikker rundt på siden.
Jeg håber du kan se hvad jeg mener når du kikker på scriptet.
Jeg vil forhøje til 200point, hvis du kan løse det for mig.

Her er "sovsen"
----
<html>

<head>
<meta http-equiv="Content-Language" content="da">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>varer</title>
</head>

<body bgcolor="#50639B" >
<%
kode = Request.Querystring("gr")
%>
<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("data/icl-prisbog.mdb")
Conn.Open DSN

' SQL forespørgsel

strSQL = "Select distinct foto from Varer where varegruppenr="& kode
Set billedeList = Conn.Execute(strSQL)

%>

<table border="0" width="100%" style="border-collapse: collapse" bordercolor="#111111" cellpadding="3">
  <tr>
    <td width="100%">
      <p align="center">
      <img border="0" src="produktfoto/logo-lys[1].gif"><br>
      <b><font face="Verdana" size="6" color="#FFFFFF"><% = request("gruppe") %></font></b></td>
  </tr>
  <tr>
    <td width="100%">
    </td>
  </tr>
  <%
' Gennemløb Recordset (rs) med en løkke
Do While Not billedeList.EOF
%>
<tr><td>
<table border="0"><tr><td width="120">
<a href="storfoto.asp?kode=<%response.write billedeList("foto")%>" target="external" onclick="window.open('', 'external', 'width=500,height=500')"><img border="0" src="produktfoto/<%=billedeList("foto")%>_small.jpg" ></a>
</td>
<td>

  <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="700" id="AutoNumber2">
            <tr>
              <td width="8%"><b><font face="Verdana" size="1" color="#C0C0C0">
                Varenr. </font></b></td>
              <td><b><font face="Verdana" size="1" color="#C0C0C0">Betegnelse
              </font></b></td>
              <td width="8%" align="center"><b>
              <font face="Verdana" size="1" color="#C0C0C0">Lille pk.</font></b></td>
              <td width="12%" align="center"><b>
              <font face="Verdana" size="1" color="#C0C0C0">Pris</font></b></td>
              <td width="8%" align="center"><b>
              <font face="Verdana" size="1" color="#C0C0C0">Stor pk.</font></b></td>
              <td width="12%" align="center"><b><font face="Verdana" size="1" color="#C0C0C0">
                Pris</font></b></td>
              <td width="12%" align="center">
          <b>
          <font face="Verdana" size="1" color="#C0C0C0">Lille pakke</font></b></td>
              <td width="12%" align="center">
          <b>
          <font face="Verdana" size="1" color="#C0C0C0">Stor pakke</font> </b>
    </td>
  </tr>

<%
  strSQL = "Select * from Varer where varegruppenr="& kode&" AND foto = '" & billedeList("foto") & "'"
  ' Udfør forespørgsel (rs indeholder nu resultatet)
  Set rs = Conn.Execute(strSQL)

  Do While Not rs.EOF
%>
  <form method="POST" action="kurv.asp?kode=bestil">
<input type="hidden" name="kunde" size="20" value="<%response.write session("kunde")%>">
<input type="hidden" name="varenummer" size="20" value="<%response.write rs("nr")%>">
<input type="hidden" name="betegnelse" size="20" value="<%response.write rs("betegnelse")%>">
<input type="hidden" name="foto" size="20" value="<%response.write rs("foto")%>">
<input type="hidden" name="lillepakke" size="20" value="<%response.write rs("lillepak")%>">
<input type="hidden" name="storpakke" size="20" value="<%response.write rs("storpak")%>">
<input type="hidden" name="storpakpr" size="20" value="<%response.write rs("storpakpr")%>">
<input type="hidden" name="lillepakpr" size="20" value="<%response.write rs("lillepakpr")%>">
            <tr>
              <td width="8%"><font face="Verdana" size="1" color="#C0C0C0">
<% response.write rs("nr")%></font></td>
              <td><font face="Verdana" size="1" color="#C0C0C0">
              <% response.write rs("betegnelse")%></font></td>
              <td width="8%" align="center"><font face="Verdana" size="1" color="#C0C0C0">
                <% response.write rs("lillepak")%> stk.</font></td>
              <td width="12%" align="center"><font face="Verdana" size="1" color="#C0C0C0">
                <% response.write rs("lillepakpr")%> kr/stk</font></td>
              <td width="8%" align="center"><font face="Verdana" size="1" color="#C0C0C0">
              <% response.write rs("storpak")%> stk.</font></td>
              <td width="12%" align="center"><font face="Verdana" size="1" color="#C0C0C0">
                <% response.write rs("storpakpr")%> kr/stk</font></td>
              <td width="12%" align="center">
          <input type="text" name="lillepakkestk" size="4" onclick="this.value=''" value="0" style="text-align: right"><input type="submit" value="bestil" name="bestil1" style="color: #C0C0C0; border: 0px solid #C0C0C0; background-color: #50639B"></td>
              <td width="12%" align="center">
          <input type="text" name="storpakkestk" size="4" onclick="this.value=''" value="0" style="text-align: right"><input type="submit" value="bestil" name="bestil" style="color: #C0C0C0; border: 0px solid #C0C0C0; background-color: #50639B"></td>
            </tr>
    </form>
  <%
' Gå til næste Record i rs
  rs.MoveNext
' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
Loop
%>
</table>
</td></tr>
</table>
<hr style="border: 1px dotted #C0C0C0" color="#C0C0C0" width="800" size="1">
<%
billedeList.Movenext
loop
' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>
</td></tr>
</table>
</body>
</html>
Avatar billede erikjacobsen Ekspert
19. september 2003 - 13:03 #7
Jeg kan ikke bruge din kildetekst til noget (jo, hvis jeg havde tid og gad....).
Men hvad står der i tabellerne?
Avatar billede hanne-rk Nybegynder
19. september 2003 - 13:15 #8
Ok - fair nok
Her er en udfyldt tabel:

<table border="0">
      <tr>
        <td width="120">
        <a onclick="window.open('', 'external', 'width=500,height=500')" href="http://laptop/test/webshop/storfoto.asp?kode=k0332" target="external">
        <img src="http://laptop/test/webshop/produktfoto/k0332_small.jpg" border="0"></a>
        </td>
        <td>
        <table id="AutoNumber2" style="BORDER-COLLAPSE: collapse" borderColor="#111111" cellSpacing="0" cellPadding="0" width="700" border="0">
          <tr>
            <td width="8%"><b><font face="Verdana" color="#c0c0c0" size="1">
            Varenr. </font></b></td>
            <td><b><font face="Verdana" color="#c0c0c0" size="1">Betegnelse
            </font></b></td>
            <td align="middle" width="8%"><b>
            <font face="Verdana" color="#c0c0c0" size="1">Lille pk.</font></b></td>
            <td align="middle" width="12%"><b>
            <font face="Verdana" color="#c0c0c0" size="1">Pris</font></b></td>
            <td align="middle" width="8%"><b>
            <font face="Verdana" color="#c0c0c0" size="1">Stor pk.</font></b></td>
            <td align="middle" width="12%"><b>
            <font face="Verdana" color="#c0c0c0" size="1">Pris</font></b></td>
            <td align="middle" width="12%"><b>
            <font face="Verdana" color="#c0c0c0" size="1">Lille pakke</font></b></td>
            <td align="middle" width="12%"><b>
            <font face="Verdana" color="#c0c0c0" size="1">Stor pakke</font> </b>
            </td>
          </tr>
          <form action="http://laptop/test/webshop/kurv.asp?kode=bestil" method="post">
            <input type="hidden" value="19-09-2003 13:00:05" name="kunde">
            <input type="hidden" value="    155150" name="varenummer">
            <input type="hidden" value="LERPOTTER Ø10-13-18 V.GRØN S/3" name="betegnelse">
            <input type="hidden" value="k0332" name="foto">
            <input type="hidden" value="12" name="lillepakke">
            <input type="hidden" value="36" name="storpakke">
            <input type="hidden" value="26" name="storpakpr">
            <input type="hidden" value="28,5" name="lillepakpr">
            <tr>
              <td width="8%"><font face="Verdana" color="#c0c0c0" size="1">
              155150</font></td>
              <td><font face="Verdana" color="#c0c0c0" size="1">LERPOTTER
              Ø10-13-18 V.GRØN S/3</font></td>
              <td align="middle" width="8%">
              <font face="Verdana" color="#c0c0c0" size="1">12 stk.</font></td>
              <td align="middle" width="12%">
              <font face="Verdana" color="#c0c0c0" size="1">28,5 kr/stk</font></td>
              <td align="middle" width="8%">
              <font face="Verdana" color="#c0c0c0" size="1">36 stk.</font></td>
              <td align="middle" width="12%">
              <font face="Verdana" color="#c0c0c0" size="1">26 kr/stk</font></td>
              <td align="middle" width="12%">
              <input style="TEXT-ALIGN: right" onclick="this.value=''" size="4" value="0" name="lillepakkestk"><input style="BORDER-RIGHT: #c0c0c0 0px solid; BORDER-TOP: #c0c0c0 0px solid; BORDER-LEFT: #c0c0c0 0px solid; COLOR: #c0c0c0; BORDER-BOTTOM: #c0c0c0 0px solid; BACKGROUND-COLOR: #50639b" type="submit" value="bestil" name="bestil1"></td>
              <td align="middle" width="12%">
              <input style="TEXT-ALIGN: right" onclick="this.value=''" size="4" value="0" name="storpakkestk"><input style="BORDER-RIGHT: #c0c0c0 0px solid; BORDER-TOP: #c0c0c0 0px solid; BORDER-LEFT: #c0c0c0 0px solid; COLOR: #c0c0c0; BORDER-BOTTOM: #c0c0c0 0px solid; BACKGROUND-COLOR: #50639b" type="submit" value="bestil" name="bestil"></td>
            </tr>
          </form>
          <form action="http://laptop/test/webshop/kurv.asp?kode=bestil" method="post">
            <input type="hidden" value="19-09-2003 13:00:05" name="kunde">
            <input type="hidden" value="    155151" name="varenummer">
            <input type="hidden" value="SKJULER Ø8-10-13 VÅRGRØN S/3  " name="betegnelse">
            <input type="hidden" value="k0332" name="foto">
            <input type="hidden" value="12" name="lillepakke">
            <input type="hidden" value="36" name="storpakke">
            <input type="hidden" value="20,75" name="storpakpr">
            <input type="hidden" value="22,5" name="lillepakpr">
            <tr>
              <td width="8%"><font face="Verdana" color="#c0c0c0" size="1">
              155151</font></td>
              <td><font face="Verdana" color="#c0c0c0" size="1">SKJULER Ø8-10-13
              VÅRGRØN S/3 </font></td>
              <td align="middle" width="8%">
              <font face="Verdana" color="#c0c0c0" size="1">12 stk.</font></td>
              <td align="middle" width="12%">
              <font face="Verdana" color="#c0c0c0" size="1">22,5 kr/stk</font></td>
              <td align="middle" width="8%">
              <font face="Verdana" color="#c0c0c0" size="1">36 stk.</font></td>
              <td align="middle" width="12%">
              <font face="Verdana" color="#c0c0c0" size="1">20,75 kr/stk</font></td>
              <td align="middle" width="12%">
              <input style="TEXT-ALIGN: right" onclick="this.value=''" size="4" value="0" name="lillepakkestk"><input style="BORDER-RIGHT: #c0c0c0 0px solid; BORDER-TOP: #c0c0c0 0px solid; BORDER-LEFT: #c0c0c0 0px solid; COLOR: #c0c0c0; BORDER-BOTTOM: #c0c0c0 0px solid; BACKGROUND-COLOR: #50639b" type="submit" value="bestil" name="bestil1"></td>
              <td align="middle" width="12%">
              <input style="TEXT-ALIGN: right" onclick="this.value=''" size="4" value="0" name="storpakkestk"><input style="BORDER-RIGHT: #c0c0c0 0px solid; BORDER-TOP: #c0c0c0 0px solid; BORDER-LEFT: #c0c0c0 0px solid; COLOR: #c0c0c0; BORDER-BOTTOM: #c0c0c0 0px solid; BACKGROUND-COLOR: #50639b" type="submit" value="bestil" name="bestil"></td>
            </tr>
          </form>
        </table>
        </td>
      </tr>
    </table>
Avatar billede erikjacobsen Ekspert
19. september 2003 - 13:19 #9
Tabellerne er altså tabellerne i databasen *g*
Avatar billede hanne-rk Nybegynder
26. september 2003 - 13:07 #10
ok jeg løste det selv
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