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 andreeide November 21, 2006 9:59 am     |     read comments (0)

Leave a Reply