/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Bruger et recordset til paging ressourcer?
Fra : Leif Neland


Dato : 12-04-07 21:21

MS-IIS-asp -> MSSQL

Hvis man bruger et ADO Recordset til at vise et søgeresultat i sider af
f.ex. 25 records, bliver den søgning så gemt på serveren, så den ikke skal
laves igen for at vise den næste side?

Kan det være årsagen til at antallet af userconnections fra webserver til
databaseserver går amok, og sitet går i stå og må genstartes?

Der bruges en metode som i denne tutorial:
http://www.codeproject.com/asp/rspaging.asp

Leif



 
 
Michael Zedeler (12-04-2007)
Kommentar
Fra : Michael Zedeler


Dato : 12-04-07 23:11

Leif Neland skrev:
> MS-IIS-asp -> MSSQL
>
> Hvis man bruger et ADO Recordset til at vise et søgeresultat i sider af
> f.ex. 25 records, bliver den søgning så gemt på serveren, så den ikke skal
> laves igen for at vise den næste side?

Ikke nødvendigvis.

> Kan det være årsagen til at antallet af userconnections fra webserver til
> databaseserver går amok, og sitet går i stå og må genstartes?

Nej. Det er nok en fejl i din kode.

Kig på LIMIT-kriteriet som man kan bruge til at udvælge et udsnit af et
resultatsæt med.

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
I am less likely to answer usenet postings by anonymous authors.
Visit my home page at http://michael.zedeler.dk/

Peter Lykkegaard (13-04-2007)
Kommentar
Fra : Peter Lykkegaard


Dato : 13-04-07 11:30

Leif Neland wrote:
> MS-IIS-asp -> MSSQL
>
> Hvis man bruger et ADO Recordset til at vise et søgeresultat i sider
> af f.ex. 25 records, bliver den søgning så gemt på serveren, så den
> ikke skal laves igen for at vise den næste side?

I princippet bliver data søgt ud igen
>
> Kan det være årsagen til at antallet af userconnections fra webserver
> til databaseserver går amok, og sitet går i stå og må genstartes?

Check connection pooling
http://www.sql-server-performance.com/sk_connection_pooling_myths.asp
>
> Der bruges en metode som i denne tutorial:
> http://www.codeproject.com/asp/rspaging.asp
>
Ikke særlig effektiv da den loader hele resultatsættet ved hver sidevisning

En anden mulighed
http://www.4guysfromrolla.com/webtech/062899-1.shtml

- Peter

--
Hi! I'm a .signature *virus*!
Copy me into your ~/.signature to help me spread!



Leif Neland (17-04-2007)
Kommentar
Fra : Leif Neland


Dato : 17-04-07 21:47


>> Der bruges en metode som i denne tutorial:
>> http://www.codeproject.com/asp/rspaging.asp
>>
> Ikke særlig effektiv da den loader hele resultatsættet ved hver
> sidevisning
Hvis man vil vise "<< 1 2 3 [forrige] 4 [næste] 5 6 7 8 >>" i top og bund,
så skal man måske lave en count(*) først for at få recordantallet, og
derefter et andet query for at få selve data'ene.

Jeg faldt over dette som jeg vil prøve ved lejlighed:

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=850&lngWId=5
>>>
The following query will emulate a

SELECT emp_id,lname,fname FROM employee LIMIT 20,10

That says, give me 10 records starting at record 21. So what will be
returned are rows 21-30. This is used heavily in web-based apps so you can
do recordset paging.

Here is what you can do in MS SQL to emulate it (this runs on the PUBS db):

select * from (
select top 10 emp_id,lname,fname from (
select top 30 emp_id,lname,fname
from employee
order by lname asc
) as newtbl order by lname desc
) as newtbl2 order by lname asc


The main thing to remember is to deal with all your ORDER BY clauses and
also to use the inner TOP as the sum of what you are looking for. In this
example - 30 since you start at 20 and want 10 rows (20+10=30).

Hope this helps you as it has helped me improve performance greatly on my
web-based apps since I no longer have to transfer loads of data across the
wire to get just the 10 results I display on a page.

Don't even think about using the internal ADO paging stuff if you have a lot
of records to deal with, it will kill your performance as it must pull the
entire recordset down to the local machine before it can do its work. Why
bring down 20,000 records if you only want to display 10?
<<<

Leif




Peter Lykkegaard (17-04-2007)
Kommentar
Fra : Peter Lykkegaard


Dato : 17-04-07 22:48

Leif Neland wrote:

> SELECT emp_id,lname,fname FROM employee LIMIT 20,10
>
Sidst jeg så efter understøttede MSSQL ikke kommandoen LIMIT :)

- Peter

--
Hi! I'm a .signature *virus*!
Copy me into your ~/.signature to help me spread!



Leif Neland (18-04-2007)
Kommentar
Fra : Leif Neland


Dato : 18-04-07 05:52

Peter Lykkegaard wrote:
> Leif Neland wrote:
>
>> SELECT emp_id,lname,fname FROM employee LIMIT 20,10
>>
> Sidst jeg så efter understøttede MSSQL ikke kommandoen LIMIT :)
>
Netop

Det er også derfor dette:

"The following query will emulate a

SELECT emp_id,lname,fname FROM employee LIMIT 20,10"

Det laver noget med samme funktion som LIMIT.

Leif






Peter Lykkegaard (18-04-2007)
Kommentar
Fra : Peter Lykkegaard


Dato : 18-04-07 19:31

Leif Neland wrote:

> "The following query will emulate a
>
En sætning fra eller til _kan_ gøre en forskel :)

- Peter

--
Hi! I'm a .signature *virus*!
Copy me into your ~/.signature to help me spread!



Michael Zedeler (18-04-2007)
Kommentar
Fra : Michael Zedeler


Dato : 18-04-07 10:42

Peter Lykkegaard skrev:
> Leif Neland wrote:
>
>> SELECT emp_id,lname,fname FROM employee LIMIT 20,10
>>
> Sidst jeg så efter understøttede MSSQL ikke kommandoen LIMIT :)

DUH. Jeg læste det oprindelige indlæg forkert, så jeg troede at der var
tale om en mysql-database.

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
I am less likely to answer usenet postings by anonymous authors.
Visit my home page at http://michael.zedeler.dk/

Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste