Markus: Anzahl der Datensätze ermitteln

Hallo,

gibt es eigentlich eine bessere Alternative zu folgender Abfrage (um die Anzahl der Datensätze zu ermitteln?):

//START

$sql = mysql_query("SELECT * FROM XXX WHERE Level>1");
$count = mysql_num_rows($sql);
echo$count;

//ENDE

Danke und Grüsse,
Markus

  1. Moin!

    gibt es eigentlich eine bessere Alternative zu folgender Abfrage (um die Anzahl der Datensätze zu ermitteln?):

    $sql = mysql_query("SELECT * FROM XXX WHERE Level>1");
    $count = mysql_num_rows($sql);
    echo$count;

    Wenn du nur die Anzahl der Datensätze brauchst:

    SELECT count(*) as zahl FROM tab WHERE bedingung

    $zahlzeile = mysql_fetch_assoc(...);
    $anzahl = $zahlzeile['zahl'];

    Das spart dir, dass die Datenbank die gesamten Datensätze herausfinden und zu PHP in einen Puffer übertragen muß - das kosten nämlich alles Zeit und Speicherplatz, den man besser nicht unnötig verschwendet.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Moin!

      SELECT count(*) as zahl FROM tab WHERE bedingung

      Etwas schlanker als mit * gehts mit count(feldname)

      roro

      1. Moin!

        SELECT count(*) as zahl FROM tab WHERE bedingung

        Etwas schlanker als mit * gehts mit count(feldname)

        Nur, wenn man NULL-Werte nicht mitzählen will.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. Servus,

          Nur, wenn man NULL-Werte nicht mitzählen will.

          oder man ein Feld angibt, das keine NULL-Werte enthält (z.B. id).

          Gruss
          Patrick

          --
          sh:( fo:| ch:? rl:( br:> n4:( ie:% mo:) va:} de:> zu:) fl:| ss:| ls:[ js:|
      2. Servus,

        würden wir dies bitte mal konkret beweisen wollen?

        Vorzugsweise sollte man dann aber auch eine Spalte nehmen, die, wie Sven auch schon meinte, keine Nullwerte enthalten kann, denn sonst bekäme man die Anzahl der in dieser Spalte gefüllten "Zellen" und nicht die Anzahl Datensätze der gesamten Tabelle.

        Ergo eignet sich der Primärschlüssel am besten. Aber dann sollte das DBMS so intelligent sein, COUNT(*) und COUNT(PK-Feld) gleich auszuführen. Nun gut, vielleicht macht MySQL auch hier wieder eigene Extrawürstchen. :)

        Ciao, Frank

      3. yo,

        Etwas schlanker als mit * gehts mit count(feldname)

        genau umgekehrt ist es richtig, es geht nicht performanter als mit *

        Ilja