Vraag & Antwoord

Webprogrammeren & scripting

[PHP/MySQL] Snelste manier om te zien of SELECT iets vindt?

4 antwoorden
  • Hoe kan ik het snelste zien of een SELECT-query wel of geen restultaten heeft opgeleverd? Zover ik weet (van horen zeggen dus kan onzin zijn) is [url=http://nl.php.net/manual/en/function.mysql-num-rows.php]mysql_num_rows[/url] erg traag? Voorbeeld:[code:1:4edd649b86]$q = "SELECT `id` FROM `persons` WHERE `nickname` = 'Buur'"; $r = mysql_query($q); if (mysql_num_rows($r) > 0) { // wel iets gevonden } else { // niets gevonden }[/code:1:4edd649b86]Kan dat niet sneller?
  • Ik heb nooit veel vertraging ondervonden met mysql_num_rows. Je zou het beste een benchmark kunnen opzetten, dan weet je het zeker.
  • Nouja kijk het zit zo. Ik wil er ook wat mee gaan doen, dus dan krijg je zo'n constructie:[code:1:bb598dbe6e]if (mysql_num_rows($r) > 0) { while ($row = mysql_fetch_assoc($r)) { /// bla bla bla } }[/code:1:bb598dbe6e]En dan krijg je dus twee keer zo'n mysql-functie, waarbij toch echt twee keer de database moet worden benaderd. Ik heb het ondertussen maar gewoon zo opgelost, wat slechts 1 database-request nodig heeft:[code:1:bb598dbe6e]$q = "SELECT `id` FROM `persons` WHERE `nickname` = 'Buur' LIMIT 1"; $r = mysql_query($q); $row = mysql_fetch_assoc($r) { if (isset($row['id'])) { // alhier mijn actie } }[/code:1:bb598dbe6e]Geen zin om dat te benchmarken, maar lijkt me sneller... De oplettende lezer heeft gezien dat ik er ineens stiekem 'LIMIT 1' heb bij gezet, en dat is omdat ik van te voren zeker weet dat het toch om maximaal 1 resultaat gaat (meer heb ik er in mijn stukje code niet nodig). Hoe dan ook, bedankt!
  • Als er toch maar 1 result is is de LIMIT natuurlijk overbodig. Trouwens, waarom dan geen mysql_result? http://be.php.net/function.mysql-result

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.