Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

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

marientje
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 mysql_num_rows 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

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