Paginate function

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Jelle -

Jelle -

11/01/2012 14:26:41
Quote Anchor link
Ik zou voor Erwin H's idee gaan in zijn eerste post
 
PHP hulp

PHP hulp

27/05/2026 07:43:18
 
Jasper DS

Jasper DS

11/01/2012 14:28:18
Quote Anchor link
Jelle, dat doe ik inmiddels al. Heb alleen nog een vraag over het aantal records.
 
Jelle -

Jelle -

11/01/2012 14:37:47
Quote Anchor link
Like this
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name WHERE id > 100 LIMIT 10;

// Next query
SELECT FOUND_ROWS();


Zelf ben ik daar niet zo'n voorstander voor aangezien het traag is

Je kan beter een total query uitvoeren en de gewone query
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT SQL_CACHE COUNT(*) AS total FROM table WHERE x

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT SQL_NO_CACHE fields FROM table WHERE x LIMIT y
Gewijzigd op 11/01/2012 14:38:34 door Jelle -
 
Erwin H

Erwin H

11/01/2012 14:39:58
Quote Anchor link
Als volgt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT SQL_CALC_FOUND_ROWS *
FROM tabel
WHERE user_id = x
LIMIT 1,4

Met in plaats van * natuurlijk al jouw kolommen.
Na het runnen van deze query moet je nog een extra query doen om de gevonden rijen op te halen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT found_rows() AS totalrows
 
Jasper DS

Jasper DS

11/01/2012 14:46:08
Quote Anchor link
Achzo, en dat is dus sneller als een extra query met COUNT(veld)?
 
Jelle -

Jelle -

11/01/2012 14:50:23
Quote Anchor link
COUNT() kan heel goed met indexes omgaan en als je het resultaat cached (SQL_CACHE, heel handig gezien je verwacht dat de gebruiker meerdere pagina's bekijkt en het result set heel klein is) is het rete snel
 
Jasper DS

Jasper DS

11/01/2012 14:51:09
Quote Anchor link
Het zijn meer als 1000 rows, wat gebruik ik dan best?
 
Erwin H

Erwin H

11/01/2012 14:53:38
Quote Anchor link
test het zou ik zeggen. Als ik de literatuur er op na sla (internet) zie ik ten eerste twee meningen over snelheid en ten tweede dat het pas echt een probleem wordt bij meer dan 100.000 records....
 
Jelle -

Jelle -

11/01/2012 14:54:28
Quote Anchor link
1000 records is peanuts

Paas je query eens
 
Jasper DS

Jasper DS

11/01/2012 14:57:54
Quote Anchor link
Deze query is voor de rapporten op te halen van alle users dus niet per user.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT v.report_id, v.klantnaam, DATE_FORMAT(v.bezoek_datum, '%d %M %Y') AS bezoek_datum , v.werkgever, g.naam  
                         FROM visit_report as v
                         INNER JOIN gebruikers as g
                         ON v.userid = g.id
                         ORDER BY report_id
 
Jelle -

Jelle -

11/01/2012 14:59:47
Quote Anchor link
En per user wordt het dus WHERE c.userid = 'x'
Index op userid en je hebt nergens last van
 
Jasper DS

Jasper DS

11/01/2012 15:05:38
Quote Anchor link
Ja maar in deze query heb ik de user niet nodig, dat is alleen als ik per user bezig ben. ;)
 
Jelle -

Jelle -

11/01/2012 15:07:02
Quote Anchor link
PHP Jasper op 11/01/2012 15:05:38:
Ja maar in deze query heb ik de user niet nodig, dat is alleen als ik per user bezig ben. ;)


Yes je moet alleen op g.id een index hebben maar daar zal de primary key wel op zitten dus zit je goed
 
Jasper DS

Jasper DS

11/01/2012 15:09:55
Quote Anchor link
Ja dat klopt. Dus gewoon Count gebruiken?
 

Pagina: « vorige 1 2



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.