SUM Performance + JOIN Frage

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

  • SUM Performance + JOIN Frage

    Hallo,

    Ich Programmiere gerade eine Bewertung und möchte die gesammelten Datensätze addieren. Das mache ich
    dann mit dem Befehl SUM und dividiere ihn mit dem durch die Anzahl der Einträge, welches ich mit Count
    auffrufe.

    Wie sieht es nun aus wenn ich sagen wir mal so 10000 Einträge habe wäre es mit SUM immer noch schnell
    genug ? Oder sollte ich doch das Ergebnis der Bewertung sagen wir mal Nachts berechnen und dann
    in einer Extra Tabelle speichern ? (Nachtsspeichern,
    damit das nicht immer live berechnet wird, falls die Performance drunter leidet.)

    Join Frage.

    Was ist der Unterschied zwischen:

    select *
    from Album, Musiker
    where Album.MNr = Musiker.MNr AND bblabla

    und:

    Select* FROM Album INNER Join Musiker ON Album.MNr = Musiker.MNr AND blablabla

  • #2
    Huhu!

    Zu 1.: 10k sollten je nach Datentyp der Zahl eigentlich noch kein Problem sein, aber Probieren geht über Studieren, mach halt mal ein paar dump-einträge und führe ein paar Selects per hand aus, dann siehst du ja obs dir schnell genug geht oder nicht - zumal das auch immer vom Server abhängt usw, von daher is eh schwer allgemein zu sagen.

    Falls zu langsam, wie du schon gesagt hast, eben nochmal abspeichern, auch wenn das der Normalisierung widerstrebt.

    Zu 2.: Performance

    Join: Wähle von der Tabelle, und da wos passt auch von der anderen.
    Mehrtabellen-Select: Wähl einfach mal alles aus und was wir nicht brauchen werfen wir dann weg.


    Gruß
    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

    Kommentar


    • #3
      THX ich danke dir.

      Du hast recht mit dem Normailisieren aber man kann ja nicht alles haben oder ???

      gruß

      Kommentar


      • #4
        Naja, man könnte die "tägliche Zählung" auch in ein memcache-Array legen und es von dort auslesen, dann bliebe die Datenbank normalisiert. Aber das mag in deinem Fall zu weit Führen
        Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

        Kommentar


        • #5
          Ok ich mach mich mal schlau darüber, aus reiner Intresse. Ich denke für mich reicht es auch.

          MMMM jetzt wo du gerade da bist was kannst du mir zu der Performance von den beiden Joins sagen ???

          Da meine Datenbank immer eh so ist, dass ich sich zwei Schlüssel also Album.MNr = Musiker.MNr identisch sind.
          Denke ich doch, dass JOIN doch langsamer wäre, da er ja prüfen muss und die andere Option einfach alles
          nimmt. Oder irre ich mich nun ????

          Kommentar


          • #6
            Original geschrieben von ArSeN
            Join: Wähle von der Tabelle, und da wos passt auch von der anderen.
            Mehrtabellen-Select: Wähl einfach mal alles aus und was wir nicht brauchen werfen wir dann weg.
            Solange du mir dafür keine Stelle in der Manual zitierst, gehe ich weiterhin davon aus, dass der Optimizer dafür sorgt, dass beide Varianten gleich schnell ausgeführt werden.

            JOIN würde ich übrigens bevorzugen, einfach weil es eindeutiger zu lesen ist.
            Prinzipiell würde ich es jedoch als "egal" einstufen.
            LEFT JOIN oder andere gehen natürlich mit der Komma-Syntax nicht.

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              Ich liebe Kompetnez

              Danke euch

              Kommentar


              • #8
                Gerade wenn die Attribute schon gleich heißen würd ichn Join nehmen, dann kann man so schön einfach schreiben "USING (MNr)".

                Jedoch scheint mir der Einwurf von ghostgambler durchaus sinnig, ich hatte das lediglich noch so im Kopf, vermutlich war es früher dann wohl so, habe es jedenfalls so gelernt.

                Prinzipiell würde ich (ebenfalls) auch immer JOINs bevorzugen, aus genanntem Grund.
                Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

                Kommentar


                • #9
                  dann mit dem Befehl SUM und dividiere ihn mit dem durch die Anzahl der Einträge, welches ich mit Count
                  auffrufe.
                  Naja... magst du AVG() nicht?
                  http://dev.mysql.com/doc/refman/5.1/...functions.html
                  Zuletzt geändert von combie; 07.01.2009, 14:13.
                  Wir werden alle sterben

                  Kommentar


                  • #10
                    Hey danke davon hatte ich noch nie was gehört. Ja ich weiß die komplette manuel ist jedoch einfach zu lang

                    THX

                    Kommentar

                    Lädt...
                    X