Frågan 27 feb. 2002 10:12 #1 Håller på med en utsökning på min ASP-sida som blivit nåt enormt seeg efter att jag skapade paging, trots att den endast är ca 1500 poster som ska sökas igenom i MS-SQL Server!
Får inga felmess utan allt funkar som det ska, MEN SOM SAGT.. jobbigt seeg... :(
Beakta följande:
<% If blnData = "true" then
mypage = Request("whichpage")
If mypage = "" then
mypage = 1
End If
mypagesize = intPageSize
SQL = " EXEC sp_GetSokForetag @foretag_cpv = '" & sok_cpv & "' , @foretag_namn = '" & sok_namn & "' , @postnummer = '" & sok_postnr & "' , @postort = '" & sok_post_add & "' , @besoksadress = '" & sok_besoks_add & "' , @organisationsnummer = '" & sok_organisation & "' , @omrade = '" & omrade & "' "
Set rst = Server.Createobject("ADODB.Recordset")
rst.cursorlocation = 3
rst.cachesize = 5
rst.open SQL, "driver={SQL Server}; server=ATELJE2; uid=sa; pwd=; database=borasarn"
If rst.EOF then
Response.write "Där fanns det ju inget... " & sok
Else
rst.movefirst
rst.pagesize = mypagesize
maxcount = rst.pagecount
rst.absolutepage = mypage
howmanyrecs = 0
howmanyfields = rst.fields.count -1
' If maxcount <> 0 then
' pad = "0"
' scriptname = request.Servervariables("script_name")
'
' for counter = 1 to maxcount
' If Cint(counter)+1 = Cint(mypage) then
' strForegaende = "sok_namn=" & sok_namn & "&sok_postnr=" & sok_postnr & "&sok_besoks_add=" & sok_besoks_add & "&sok_post_add=" & sok_post_add & "&sok_tfn=&sok_cpv=" & sok_cpv & "&sok_organisation=" & sok_organisation & "&data="& blnData &"&omrade="& intOmrade &"&antal_traffar=" & intPageSize & "&whichpage="&counter&"&mypagesize=" & mypagesize
' End If
' If Cint(mypage) <> Cint(counter) then
' ref = "<a href=sok.asp?sok_namn=" & sok_namn & "&sok_postnr=" & sok_postnr & "&sok_besoks_add=" & sok_besoks_add & "&sok_post_add=" & sok_post_add & "&sok_tfn=&sok_cpv=" & sok_cpv & "&sok_organisation=" & sok_organisation & "&data="& blnData &"&omrade="& intOmrade &"&antal_traffar=" & intPageSize & "&whichpage=" & counter
' ref = ref & "&mypagesize=" & mypagesize &"'>" & counter & "</a>"
' strSidor = strSidor & ref
' Else
' strSidor = strSidor & counter & " "
' End If
' If Cint(counter)-1 = Cint(mypage) then
' strNasta = "sok.asp?sok_namn=" & sok_namn & "&sok_postnr=" & sok_postnr & "&sok_besoks_add=" & sok_besoks_add & "&sok_post_add=" & sok_post_add & "&sok_tfn=&sok_cpv=" & sok_cpv & "&sok_organisation=" & sok_organisation & "&data="& blnData &"&omrade="& intOmrade &"&antal_traffar=" & intPageSize & "&whichpage="&counter&"&mypagesize=" & mypagesize
' End If
' Next
'
' End If
' intEndPost = mypagesize * mypage
' intStartPost = (intEndPost - mypagesize) + 1
' strVisar_Traffar = intStartPost & " - " & intEndPost
%>
Förmodligen någonstans där problemet ligger...
THX!
RED. Bry er inte om att det fattas lite End If och sånt, för jag kopierade inte hela sidan utan bara själva paging-biten...
P PatrikB Medlem sedan mars 2000 2 836 inlägg Hur många poster kan returneras i en sökning?
Själv brukar jag begränsa att endast tex Max 2 - 400 poster returneras.
Finns en egenskap till ADODB.Recordset där man kan ställa in max antal records som ska returneras, rst.MaxRecords = 200
Kan vara ett sätt att snabba upp sökningarna
cya,
PatrikB
Så som det är nu så kan 5, 10 eller 20st poster returneras.. och det ska inte vara några som hellst problem!
P PatrikB Medlem sedan mars 2000 2 836 inlägg ... per sida menar du då ...
Fast, det är egentligen det totala antal poster som finns jag menar, för när du kör frågan så "returneras" ALLA poster och sedan fixar ADODB.Recordset delningen av hur många poster som ska visas på varje sida.
cya,
PatrikB
P PatrikB Medlem sedan mars 2000 2 836 inlägg så får du tillbaka 100 sidor med 20 poster per sida så har 2000 poster returnerats
Testa med att sätta .MaxRecords = 200 och se om du får ngn skillnad i prestanda
cya,
PatrikB
yes, per sida såklart...
Ska testa MaxRecords då, men hur funkar det..?
Faller vissa poster i db'n "ut ur" recsetet då? :q
snacka om skillnad, hinner knappt blinka innan utsökningen är färdig! :)
Jag är fortfarande nyfiken på min förra fråga... ;)
P PatrikB Medlem sedan mars 2000 2 836 inlägg Jepp,
det är du som programmerare som får se till att begränsa sådan hära sökingar som användarna kan göra. Kika lite på tex Altavista så ser du att du endast får fram 20 sidor. Dvs, om användaren inte hittar vad den söker så måste den kunna göra andra typer av sökningar med bättre träffar, dvs du som programmerare måste lägga in funktioner som AND, OR, NOT etc i sökningarna
cya,
PatrikB
P PatrikB Medlem sedan mars 2000 2 836 inlägg för tänk dig själv, det är ju ingen ide att som användare söka på tex a och få tillbaka 100 000 poster. Användaren måste kunna förfina sina sökningar med ovanstående funktionalitet
cya,
PatrikB
OK...
Satt MaxRecords till 2000 nu, och det går lika fort som 200 (kör sökningen lokalt), säkert skillnad när man ska söka bland 100.000-tals poster...
Tack för hjälpen iaf!