Allgemeines

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Allgemeines

    Hallo,

    letztens habe ich gehört, dass man z.B. um Einträge einer Tabelle zu zählen lieber folgendes verwenden sollte:

    PHP-Code:
    $count mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM news_tabelle"));echo "Datensätze: $count[0]"
    statt so wie ich es eigentlich immer tue:

    PHP-Code:
    $result mysql_query("SELECT * FROM news_tabelle");
    $num_rows mysql_num_rows($result);

    echo 
    "Datensätze: $num_rows"
    Ist das jetzt ein erheblicher Unterschied ? Ich meine, es kommt ja das selbe bei raus. Wie kann man wissen was effizienter und vllt auch performancegünstiger ist ?

    Zudem wollte ich zu varchar noch was fragen. Ist es nicht eigentlich egal welche Zahl verwendet wird, also ne höhere Zahl kann ja nie falsch sein, so z.B. varchar(100). Oder wie ist das da so ?

    Allgemein eigentlich: Wie kann ich denn wissen was besser ist als anderes, obwohl es den selben Effekt hat ? Gibt es da einige Festsetzungen ?
    Zuletzt geändert von snook; 05.10.2003, 09:50.

  • #2
    Du solltest mal versuchen zu verstehen, was du machst!!!

    1. Du zählst die Einträge.
    2. Du holst(!) die Einträge und zählst sie dann.

    Frage beantwortet?

    Wenn du mal in die Docu von MySQL reinsehen würdest, bevor du wild irgendwelche Felder anlegst (in Myadmin ist die sogar direkt verlinkt), dann wüsstest du, dass sich das auf die Feldlänge bezieht.

    Zu deiner dritten Frage; einfach mal die Zeit nehmen, bzw. mal versuchen zu verstehen!

    Kommentar


    • #3
      Re: Allgemeines

      Original geschrieben von snook
      Allgemein eigentlich: Wie kann ich denn wissen was besser ist als anderes, obwohl es den selben Effekt hat ?
      versuch dir einfach klar zu machen, was in den beiden fällen im hintergrund abläuft.

      im ersten fall zählt die DB alle datensätze durch, die auf deine bedingung zutreffen, und gibt dir einen datensatz zurück, in dem dann eben diese zahl steht.

      im zweiten fall muss die DB zuerst alle datensätze an dein script übergeben (denk an performance! besonders, da du auch noch ein SELECT * machst - jedes TEXT- oder BLOB-feld wird dabei komplett mit übergeben, muss also von der DB zum webserver/deinem script "rübergeschaufelt" werden) - nur um dann alle zu zählen.

      (sieh dir zum letzten beispiel auch mal Warum soll ich nicht SELECT * schreiben? an.)


      das ergebnis mag in beiden fällen das gleiche sein - aber einmal auf einem sehr einfachen, performanten weg - und einmal mit der holzhammer-methode, die auf zu übertragende datenmengen (zw. db-server und webserver - ob diese dabei auf dem selben rechner laufen, macht wenig unterschied) keine rücksicht nimmt ...
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Wenn man aber bereits ein Select-Statement ausgeführt hat um jeweilige Datensätze anzeigen zu lassen, zudem aber noch die Anzahl jeweiliger Datensätze ist dort ebenfalls ein COUNT praktischer ?

        Kommentar


        • #5
          @snook: NEIN Natürlich nicht! Dann musst du ja ein zweites SQL-Query absetzten. Und das kann nicht wirklich performant sein!

          Kommentar


          • #6
            Okay, gut.

            Kommentar

            Lädt...
            X