Avatar billede bredum Nybegynder
12. august 2002 - 18:52 Der er 14 kommentarer og
1 løsning

Søgning.. hvad er hurtigst??

Jeg har en tabel med 40.000 personer, hvad er denbedste måde at lave en søgning på?? Det skal være muligt at liste dem alle på een lang række. Hvordan gøres det bedst og hurtigst??? Jeg har prøvet denne:
SQL = "SELECT * FROM DLG.saelger WHERE " & Valg & " = '" & Query & "'"

men den er meget langsom, hvis den når over 500 emner.
Avatar billede medions Nybegynder
12. august 2002 - 18:56 #1
Det er der meget om, hvad der er hurtigst and so on! -men du kunne altid starte med at definere hvilke kolonner den havde at arbejde med, så den ikke tjekker alle unyttige kolonner... fx.

SQL = "SELECT kolonne1, kolonne2 FROM DLG.saelger WHERE " & Valg & "='" & Query & "'"

//>Rune
Avatar billede stigc Nybegynder
12. august 2002 - 18:59 #2
det vinder han vel ca. 0% med, hvis han skal bruge alle kolonnerne.

Du kan indeksere dine kolonner. Desuden kan du lave paging i resultatet, så du ikke skal vises 500 rækker på én side.
Avatar billede bredum Nybegynder
12. august 2002 - 18:59 #3
vil man så kunne gøre sådan??
SQL = "SELECT " & Valg & " FROM DLG.saelger WHERE " & Valg & " = '" & Query & "'"
Avatar billede bredum Nybegynder
12. august 2002 - 19:00 #4
hvis jeg kun skal bruge 1 kollonne??
Avatar billede medions Nybegynder
12. august 2002 - 19:03 #5
bredum> yep..

//>Rune
Avatar billede medions Nybegynder
12. august 2002 - 19:05 #6
-Men som stigc oxo siger, så ville det nok være en god ide at bruge et pagingsystem... her har du et link til et (nu ved jeg ik' hvilken database du bruger men her er der til MySQL og Access):

Access:
http://activedeveloper.dk/aspdigital/kapitel2/paging.asp

MySQL:
http://activedeveloper.dk/aspdigital/2001112301.asp

//>Rune
Avatar billede bredum Nybegynder
12. august 2002 - 19:15 #7
Rune du skal lige svare, så du kan få lidt point :-)
Avatar billede neteffect Nybegynder
12. august 2002 - 19:15 #8
Langsom, siger du, men hvor ved du, hvor meget af tiden der går med selve queryen, og hvor meget tid der går med at generere (og transmittere) resultatsiden? Der kunne være noget at hente ved at kigge den genererede kode efter i sømmene. Anyway, paging løser det vel.
Avatar billede medions Nybegynder
12. august 2002 - 19:17 #9
Har skam svaret :-) -men her svare jeg lige igen ;-)

//>Rune
Avatar billede bredum Nybegynder
12. august 2002 - 19:36 #10
lige et sidste ?
Avatar billede bredum Nybegynder
12. august 2002 - 19:37 #11
Hvorfor virker dette ikke?
<!--#include file="protect.inc"-->
<%
Query = Trim(Request.Form("Query"))
Valg = Trim(Request.Form("Valg"))
%>
<HEAD><LINK href="style.css" type=text/css rel=stylesheet></HEAD>
<BODY bgColor=#ffffff leftMargin=0 topMargin=0 margin="0" marginheight="0"
marginwidth="0">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
  <tr>
    <td width="50%"><IMG height=84 src="image/sommertop.jpg" width=681></td>
    <td width="50%" valign="top">
    <!-- #include virtual="/dlg/velkom.inc"-->
    </td>
  </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
  <tr>
    <td width="19%"><!-- #include virtual="/dlg/menu.inc"--></td>
    <td width="81%" valign="top">
    <form method="POST" action="find_kunde.asp">
    <select size="1" name="Valg">
    <option>Kundenr</option>
    <option value="Mobil">Mobiltelefon</option>
    <option value="Snr">Sælgernummer</option>
    </select></p>
    <input type="text" name="Query" size="25">
    <input type="submit" value="Søg" name="Soeg">
    <input type="reset" value="Slet" name="slet">
    </form>
    </td>
  </tr>
</table>
<br>
<% If Query = "" Then %>
<% Else %>
<!-- #include virtual="/dlg/database.inc"-->

<%
Set objRs = Conn.Execute("SELECT COUNT(*) AS records FROM DLG.saelger;")
intRecords = int(objRs("records"))
objRs.Close
Set objRs = Nothing

intValue = (intRecords - intStart)
If intPageSize > intValue Then
intPageSize = intValue
end if

intPage = Request.QueryString("page")
if intPage = "" OR not isNumeric(intPage) then
    intPage = int(1)
else
    intPage = int(intPage)
end if

intPageSize = int(100)
intStart = intPage*intPageSize
intStart = intStart-intPageSize
intPages = int(intRecords/intPageSize)+1

SQL = "SELECT * FROM DLG.saelger WHERE " & Valg & " = '" & Query & "' LIMIT " & intStart & ", " & intPageSize & ";"
Response.write Sql
Set rs = Conn.Execute(SQL)
if rs.EOF or rs.BOF then
        Response.Write "Ingen poster"
    else
%>
<table>
</TD></TR>
  <table>
        <tr class="lightgrey">
        <td>Id</td>
        <td>Kundenummer</td>
        <td>Fornavne</td>
        <td>Efternavn</td>
        <td>Adresse</td>
        <td>Postnr.</td>
        <td>By</td>
        <td>Telefon</td>
        <td>Mobil</td>
        <td>Fastnet</td>
        <td>SælgerNr</td>
        </tr>
<%

For i = 1 to intPages
    if i = intPage then
        %>

        <tr>
        <td><%= rs("Id") %></td>
        <td><a href="rediger_kunde.asp?Id=<%= rs("Id") %>"><font color="#000000"><%= rs("Kundenr") %></font></a></td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;<a href="rediger_kunde.asp?Id=<%= rs("Id") %>"><font color="#000000"><%= rs("Mobil") %></td>
        <td>&nbsp;<a href="rediger_kunde.asp?Id=<%= rs("Id") %>"><font color="#000000"><%= rs("Fastnet") %></td>
        <td>&nbsp;<%= rs("Snr") %></td>
        </tr>
</table>
        <%
    else
        Response.Write "<a href=""find_kunde.asp?page=" & i & """>"
        Response.Write i
        Response.Write "</a> "
    end if
next
%>

<%
RS.Close
Set rs = Nothing
End IF
Conn.Close
Set Conn = Nothing
End If
%>

</BODY>
Avatar billede medions Nybegynder
12. august 2002 - 19:38 #12
*LOL*

Jeg er ked af at sige det, men det er et spørgsmål pr. oprettet spm her på eksperten :-) -opret et spm mere og læg det der ;o)

By the way, du er jo nødt til at give mig en fejlmeddelse jeg kan arbejde med!

//>Rune
Avatar billede medions Nybegynder
12. august 2002 - 19:40 #13
-Men prøv at fjerne dit punktum, det er ikke realivant at have, når du arbejder med SQL, det kunne hurtigt opfattes som et "domæne" til din statement!

//>Rune
Avatar billede medions Nybegynder
12. august 2002 - 19:46 #14
Thx 4 Poinz

//>Rune
Avatar billede bredum Nybegynder
12. august 2002 - 19:47 #15
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