This entry was posted on Tuesday, November 21st, 2006 at 9:59 am and is filed under mysql. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Når man viser søketreff på en nettside, er det vanlig å dele lange resultat over flere sider. I 1001 Spill-koden har dette blitt gjort med to søk.
- Et søk som teller antall mulige treff med select count(*)
ex: SELECT COUNT(*) FROM docs - Et søk som henter de 10 treffene som skal vises på siden med hjelp av limit.
ex: SELECT * FROM docs LIMIT 10,20
Dette kan være ineffektivt om du har en tung sql, da det samme tunge søket gjøres to ganger.
I MySQL 4.0.0 kan dette løses med SQL_CALC_FOUND_ROWS som får MySQL til å telle antall treff også i et LIMIT-begrenset søk. Antall rader må deretter hentes ut med SELECT FOUND_ROWS();
Eks:
SELECT SQL_CALC_FOUND_ROWS * FROM docs LIMIT 10,20;
SELECT FOUND_ROWS();
Husk at SELECT FOUND_ROWS() må kjøres rett etter selve spørringen, ellers er resultatet tapt.
Kilde: MySQL: Get total number of rows when using LIMIT
Les også: MySQL: Information Functions
posted by November 21, 2006 9:59 am | read comments (0)
