Typ für Fließkommazahl; welche?

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

  • Typ für Fließkommazahl; welche?

    Hallo Leute,

    ich möchte in einer Spalte rein positive Zahlenwerte von
    0.001
    bis
    100000
    speichern.
    Eventuell sogar von 0.001 bis 1000000.

    Welchen Spaltentyp sollte ich dazu am besten wählen?
    FLOAT, DECIMAL, ...?
    Wo liegen die Vor- und Nachteile der verschiedenen Fließkommatypen?

    arrays sind klasse

  • #2
    Der Vorteil liegt darin, wenn man das Manual lesen kann. Aber allein das ist nicht von Vorteil, sondern man sollte auch verstehen was man liest.

    Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
    sondern mit den Augen das Manual zu lesen.

    Kommentar


    • #3
      sag doch gleich, dass du es nicht weißt

      doch spaß beiseite:
      kann man nicht einfach, in klaren sätzen, den unterschied zwischen DECIMAL und FLOAT erklären?
      Ich habe bereits mehrere Manuals gelesen, doch erkenne ich keinen signifikanten Unterschied, der das eine oder andere unter gegebenen Bedingungen favorisiert.
      arrays sind klasse

      Kommentar


      • #4
        Original geschrieben von Maranello-550
        kann man nicht einfach, in klaren sätzen, den unterschied zwischen DECIMAL und FLOAT erklären?
        zitat manual:
        "MySQL unterstützt alle numerischen Typen von ANSI/ISO-SQL92. Diese Typen beinhalten die exakten numerischen Datentypen (NUMERIC, DECIMAL, INTEGER und SMALLINT) sowie die näherungsweisen numerischen Datentypen (FLOAT, REAL und DOUBLE PRECISION)."

        http://de.wikipedia.org/wiki/Gleitkommazahl
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Auch mal so gefragt:
          Wenn ich DECIMAL(18,12) benutze, womit habe ich dann zu rechnen bzw. wie lange muss der Server rechnen (relativ als Schätzung gesehen)?

          Da DECIMAL den angegebenen Zahlenwert als String speichert, sollte dies kein Problem darstellen, oder?
          arrays sind klasse

          Kommentar


          • #6
            Wenn ich DECIMAL(18,12) benutze, womit habe ich dann zu rechnen bzw. wie lange muss der Server rechnen (relativ als Schätzung gesehen)?
            42

            Kommentar


            • #7
              schon verstanden

              habs gerade selbst in ner schleife getestet und dabei für effektiv genug befunden.

              arrays sind klasse

              Kommentar


              • #8
                Ich habe sogar eine Beobachtung gemacht, die für den einen oder anderen unter uns doch sehr interessant sein kann:

                Ich habe nun beides getestet:
                • Die Gesamtdauer von 10.000 Abfragen bei einem Spaltentyp DECIMAL(20,12) in einem UPDATE mit folgender Rechnung:
                  view_num = ((view_num * (time_last - time_start)) + 86400) / (UNIX_TIMESTAMP() - time_start)
                • Die Gesamtdauer von 10.000 Abfragen bei einem Spaltentyp INT(11) in einem UPDATE mit folgender Rechnung:
                  view_num = view_num + 1


                Ich habe dazu die Laufzeit mit microtime() etc. berechnet und musste feststellen, dass die erste recht komplizierte Rechnung bei DECIMAL(20,12) eindeutig schneller war. Diese hat nämlich nur 5sec gebraucht, wo hingegen, die deutlich einfacher strukturierte Rechnung, bei INT(11), über 20sec brauchte. Habe das Ganze natürlich mehrere Male getestet.

                Mich würde hierbei besonders eine Erklärung interessieren, nebst der Empfehlung, welcher Spaltentyp sich mehr rentiert. Vielleicht könnt ihr mir dabei weiterhelfen.
                Zuletzt geändert von Maranello-550; 28.06.2005, 22:59.
                arrays sind klasse

                Kommentar


                • #9
                  The biggest advantage of open source is the open source.

                  Ich weiß nur, dass bis MySQL 5 die DECIMALs als Strings gespeichert wurden. Aber das erklärt den Effekt nicht.

                  Kommentar


                  • #10
                    Ich werds morgen nochmal bei vielleicht etwas umverteilter Serverlast testen. Eventuell war es nut ein temporärer Effekt, der auf veränderliche Serverlasten zurückzuführen ist.

                    Gute Nacht
                    arrays sind klasse

                    Kommentar


                    • #11
                      Habe es gerade nochmal getestet, und musste feststellen, dass beide Varianten doch sehr äquivalent sind, wobei INT(11) um einen Tick schneller war.

                      arrays sind klasse

                      Kommentar

                      Lädt...
                      X