webForumDet fria alternativet

Seg Sökning/Paging

ASP

9 svar · 244 visningar · startad av JAreMANNEN

Medlem sedan aug. 20002 272 inlägg
Frågan#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 & "&amp;sok_postnr=" & sok_postnr & "&amp;sok_besoks_add=" & sok_besoks_add & "&amp;sok_post_add=" & sok_post_add & "&amp;sok_tfn=&amp;sok_cpv=" & sok_cpv & "&amp;sok_organisation=" & sok_organisation & "&amp;data="& blnData &"&amp;omrade="& intOmrade &"&amp;antal_traffar=" & intPageSize & "&amp;whichpage="&counter&"&amp;mypagesize=" & mypagesize
'					End If
'					If Cint(mypage) <> Cint(counter) then
'						ref = "<a href=sok.asp?sok_namn=" & sok_namn & "&amp;sok_postnr=" & sok_postnr & "&amp;sok_besoks_add=" & sok_besoks_add & "&amp;sok_post_add=" & sok_post_add & "&amp;sok_tfn=&amp;sok_cpv=" & sok_cpv & "&amp;sok_organisation=" & sok_organisation & "&amp;data="& blnData &"&amp;omrade="& intOmrade &"&amp;antal_traffar=" & intPageSize & "&amp;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 & "&amp;sok_postnr=" & sok_postnr & "&amp;sok_besoks_add=" & sok_besoks_add & "&amp;sok_post_add=" & sok_post_add & "&amp;sok_tfn=&amp;sok_cpv=" & sok_cpv & "&amp;sok_organisation=" & sok_organisation & "&amp;data="& blnData &"&amp;omrade="& intOmrade &"&amp;antal_traffar=" & intPageSize & "&amp;whichpage="&counter&"&amp;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...

Medlem sedan mars 20002 836 inlägg
#2

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

Medlem sedan aug. 20002 272 inlägg
#3

Så som det är nu så kan 5, 10 eller 20st poster returneras.. och det ska inte vara några som hellst problem!

Medlem sedan mars 20002 836 inlägg
#4

... 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

Medlem sedan mars 20002 836 inlägg
#5

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

Medlem sedan aug. 20002 272 inlägg
#6

yes, per sida såklart...

Ska testa MaxRecords då, men hur funkar det..?

Faller vissa poster i db'n "ut ur" recsetet då? :q

Medlem sedan aug. 20002 272 inlägg
#7

snacka om skillnad, hinner knappt blinka innan utsökningen är färdig! :)

Jag är fortfarande nyfiken på min förra fråga... ;)

Medlem sedan mars 20002 836 inlägg
#8

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

Medlem sedan mars 20002 836 inlägg
#9

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

Medlem sedan aug. 20002 272 inlägg
#10

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!

258 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)