Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[MySQL] Aantal resultaten tonen met 'LIMIT'

Pagina: 1
Acties:

  • Keiichi
  • Registratie: Juni 2005
  • Laatst online: 20:29
In een applicatie van mij haal ik met een SELECT een aantal rows op met een LIMIT statement. In PHP (bijvoorbeeld) kan ik alleen te weten komen hoeveel resultaten er terug zijn gekomen (mysql_num_rows ()) Met LIMIT 5, is dit 5 (of minder als er minder rows zijn). Maar ik wil weten hoeveel resultaten er ongeacht de limit zouden zijn.

Om het totaal aantal resultaten te krijgen kan ik 'SELET COUNT(*)' uitvoeren, maar dit lijkt me dubbelop.

Is er een manier op het totaal aantal resultaten te tonen ongeacht hoe ik mijn query ook limit zonder queries dubbelop te doen?

Solar @ Dongen: http://solar.searchy.net/ - Penpal International: http://ppi.searchy.net/


  • devguru
  • Registratie: April 2007
  • Laatst online: 18-11 13:49
Oei, zal ik maar weer de PHP-nerd gaan uithangen:

<?php
if($q = mysql_query("SELECT COUNT(id) FROM tablel LIMIT 5"))
{
while($res = mysql_fetch_array($q))
{
echo mysql_result($res, 0);
}
}
?>

Ik weet niet of het ook werkt met de LIMIT erin :) Maar het is een alternatieve manier voor num_rows die misschien wel werkt. Anders zul je het met een aparte query moeten doen >:)

[ Voor 11% gewijzigd door devguru op 24-03-2008 13:21 ]


  • Keiichi
  • Registratie: Juni 2005
  • Laatst online: 20:29
devguru schreef op maandag 24 maart 2008 @ 13:20:
Oei, zal ik maar weer de PHP-nerd gaan uithangen:

<?php
if($q = mysql_query("SELECT COUNT(id) FROM tablel LIMIT 5"))
{
while($res = mysql_fetch_array($q))
{
echo mysql_result($res, 0);
}
}
?>

Ik weet niet of het ook werkt met de LIMIT erin :) Maar het is een alternatieve manier voor num_rows die misschien wel werkt. Anders zul je het met een aparte query moeten doen >:)
Dit werkt wel, maar dan nog zullen er 2 queries zijn die de gehele database gaan doorzoeken (Er worden uiteraard ook WHERE statements gebruiks ;) ) De query cache staat dan wel aan, maar ik denk dat je dat niet als soort van hulpmiddel hierbij moet gaan gebruiken.

Solar @ Dongen: http://solar.searchy.net/ - Penpal International: http://ppi.searchy.net/


  • Tanuki
  • Registratie: Januari 2005
  • Niet online
SQL:
1
2
SELECT SQL_CALC_FOUND_ROWS * FROM test LIMIT 0, 10;
SELECT FOUND_ROWS();


2 query's dus.

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • BHR
  • Registratie: Februari 2002
  • Laatst online: 18-11 20:21

BHR

Ja dat kan, maar heeft performance impact. De limit optie is er juist om niet álle geselecteerde rijen bij langs te moeten.

Hier zie je een voorbeeld met SQL_CALC_FOUND_ROWS.
http://www.mysqlperforman...t-to-sql_calc_found_rows/

Hier gerelateerde info uit mysql reference manual
http://dev.mysql.com/doc/...nformation-functions.html

-te laat

[ Voor 1% gewijzigd door BHR op 24-03-2008 13:33 . Reden: sneller typen :) ]

No amount of key presses will shut off the Random Bug Generator


  • Keiichi
  • Registratie: Juni 2005
  • Laatst online: 20:29
l0c4lh0st schreef op maandag 24 maart 2008 @ 13:27:
SQL:
1
2
SELECT SQL_CALC_FOUND_ROWS * FROM test LIMIT 0, 10;
SELECT FOUND_ROWS();


2 query's dus.
Hey, dit werkt d:)b Wel 2 queries, maar de 2de is geen query die de hele table weer doorzoekt.
BHR schreef op maandag 24 maart 2008 @ 13:32:
Ja dat kan, maar heeft performance impact. De limit optie is er juist om niet álle geselecteerde rijen bij langs te moeten.

Hier zie je een voorbeeld met SQL_CALC_FOUND_ROWS.
http://www.mysqlperforman...t-to-sql_calc_found_rows/

Hier gerelateerde info uit mysql reference manual
http://dev.mysql.com/doc/...nformation-functions.html

-te laat
Eens even kijken, klinkt interessant.

[ Voor 46% gewijzigd door Keiichi op 24-03-2008 13:36 ]

Solar @ Dongen: http://solar.searchy.net/ - Penpal International: http://ppi.searchy.net/


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
So, obvious conclusion from this simple test is: when we have appropriate indexes for WHERE/ORDER clause in our query, it is much faster to use two separate queries instead of one with SQL_CALC_FOUND_ROWS.
Pagina: 1