/ 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
Begrænse antal søge resultater
Fra : Harald


Dato : 06-04-06 17:16

Nu ved jeg ikke om det er her eller i en webdesign gruppe jeg skal spørge
men jeg har en hjemmeside hvor man kan søge i en MySQL base, hvis der er
flere hundrede resultater vil jeg gerne vise det således:
Viser 1-25 ud af 700 resultater.
Jeg ved godt at jeg kan begrænse resultatet ved at bruge LIMIT men jeg skal
jo bruge det total antal for at kunne skrive ".. ud af 700" så betyder det
at jeg først skal søge og få det komplette antal og så derefter søge igen
med en LIMIT på, det belaster jo serveren ekstra?

/HK



 
 
Peter Brodersen (06-04-2006)
Kommentar
Fra : Peter Brodersen


Dato : 06-04-06 17:35

On Thu, 6 Apr 2006 18:16:07 +0200, "Harald" <nomail@noname.dk> wrote:

>Jeg ved godt at jeg kan begrænse resultatet ved at bruge LIMIT men jeg skal
>jo bruge det total antal for at kunne skrive ".. ud af 700" så betyder det
>at jeg først skal søge og få det komplette antal og så derefter søge igen
>med en LIMIT på, det belaster jo serveren ekstra?

Du kan benytte dig af SQL_CALC_FOUND_ROWS og FOUND_ROWS():

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#id3155227

--
- Peter Brodersen
Find dig selv: http://map.ter.dk/

Harald (06-04-2006)
Kommentar
Fra : Harald


Dato : 06-04-06 19:29

"Peter Brodersen" <usenet2006@ter.dk> skrev i en meddelelse
news:e13g0c$lse$1@news.klen.dk...
> On Thu, 6 Apr 2006 18:16:07 +0200, "Harald" <nomail@noname.dk> wrote:
>
>>Jeg ved godt at jeg kan begrænse resultatet ved at bruge LIMIT men jeg
>>skal
>>jo bruge det total antal for at kunne skrive ".. ud af 700" så betyder det
>>at jeg først skal søge og få det komplette antal og så derefter søge igen
>>med en LIMIT på, det belaster jo serveren ekstra?
>
> Du kan benytte dig af SQL_CALC_FOUND_ROWS og FOUND_ROWS():
>
> http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#id3155227

Det virker fint, så skal jeg bare finde ud af hvordan jeg får det flettet
ind på min side.

/HK



Harald (07-04-2006)
Kommentar
Fra : Harald


Dato : 07-04-06 13:30

"Peter Brodersen" <usenet2006@ter.dk> skrev i en meddelelse
news:e13g0c$lse$1@news.klen.dk...
> On Thu, 6 Apr 2006 18:16:07 +0200, "Harald" <nomail@noname.dk> wrote:
>
>>Jeg ved godt at jeg kan begrænse resultatet ved at bruge LIMIT men jeg
>>skal
>>jo bruge det total antal for at kunne skrive ".. ud af 700" så betyder det
>>at jeg først skal søge og få det komplette antal og så derefter søge igen
>>med en LIMIT på, det belaster jo serveren ekstra?
>
> Du kan benytte dig af SQL_CALC_FOUND_ROWS og FOUND_ROWS():
>
> http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#id3155227

Er det normalt at man benytter SQL_CALC_FOUND_ROWS hver gang man søger dvs.

SELECT SQL_CALC_FOUND_ROWS * FROM `boger` limit 60,20
og næste gang
SELECT SQL_CALC_FOUND_ROWS * FROM `boger` limit 80,20

eller gør man det kun første gang og så gemmer det som SELECT FOUND_ROWS()
returnere til de efterfølgende selects?

/HK



Kim Andersen (07-04-2006)
Kommentar
Fra : Kim Andersen


Dato : 07-04-06 08:35


"Harald" <nomail@noname.dk> wrote in message
news:44353eca$0$84032$edfadb0f@dtext01.news.tele.dk...
> Nu ved jeg ikke om det er her eller i en webdesign gruppe jeg skal spørge
> men jeg har en hjemmeside hvor man kan søge i en MySQL base, hvis der er
> flere hundrede resultater vil jeg gerne vise det således:
> Viser 1-25 ud af 700 resultater.
> Jeg ved godt at jeg kan begrænse resultatet ved at bruge LIMIT men jeg
> skal jo bruge det total antal for at kunne skrive ".. ud af 700" så
> betyder det at jeg først skal søge og få det komplette antal og så
> derefter søge igen med en LIMIT på, det belaster jo serveren ekstra?
>

At lave en søging med "SELECT COUNT(*) FROM tbl" tager ikke ekstra tid, vil
jeg mene. Hvis man har en primary index defineret med noget id.

Ellers er det jo at lave

"SELECT * FROM tbl LIMIT 0,25"
"SELECT * FROM tbl LIMIT 25,25"
"SELECT * FROM tbl LIMIT 50,25"

/Kim




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

Månedens bedste
Årets bedste
Sidste års bedste