Standardsortierung?

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

  • Standardsortierung?

    Hallo,

    ich habe eine Tabelle (sensordata) mit einigen zehntausend Einträgen. Aus dieser Tabelle möchte ich jeweils den letzten Eintrag holen. Das habe ich bisher so gemacht:

    PHP-Code:
    SELECT svtimestamp FROM sensordata
    WHERE host 
    AND st 1
    ORDER BY timestamp DESC
    LIMIT 1 
    Durch das "ORDER BY timestamp" dauert die Abfrage unerträglich lange. Wenn ich es aber weg lasse, wird nicht der allerletzte Datensatz, sondern der erste geholt.

    Wie hole ich also am besten (bzw. schnellsten) nur den letzten Datensatz?

    Dankeschön!

    Bis dann
    Lennart

  • #2
    Die Frage ist, von welchem Typ ist die Spalte "timestamp"?

    Kommentar


    • #3
      Original geschrieben von TobiaZ
      Die Frage ist, von welchem Typ ist die Spalte "timestamp"?
      int(10)

      Kommentar


      • #4
        Ein Index ist gesetzt?

        mal irgendwas wie WHERE timestamp = MAX(timestamp) versucht?

        Kommentar


        • #5
          Original geschrieben von TobiaZ
          Ein Index ist gesetzt?
          Ja, auf timestamp.

          Original geschrieben von TobiaZ
          mal irgendwas wie WHERE timestamp = MAX(timestamp) versucht?
          Das gibt "Invalid use of group function".

          Kommentar


          • #6
            Das gibt "Invalid use of group function".
            Ja, ohne Gruppierung ist das klar.

            Kommentar


            • #7
              Original geschrieben von TobiaZ
              Ja, ohne Gruppierung ist das klar.
              Ich möchte ja aber auch nichts gruppieren. Laut einer Google-Suche soll ein "GROUP BY timestamp" reichen - Reicht bei mir aber ebensowenig wie bei vielen anderen, die das selbe Problem hatten.

              Kommentar


              • #8
                Laut einer Google-Suche soll ein "GROUP BY timestamp" reichen - Reicht bei mir aber ebensowenig wie bei vielen anderen, die das selbe Problem hatten.
                heißt?

                Durch das "ORDER BY timestamp" dauert die Abfrage unerträglich lange.
                Wie lange ist eigentlich "unerträglich lange"?

                Kommentar


                • #9
                  Original geschrieben von TobiaZ
                  heißt?
                  Heißt, dass immer noch der selbe Fehler kommt.

                  Original geschrieben von TobiaZ
                  Wie lange ist eigentlich "unerträglich lange"? [/B]
                  10-15 Sekunden.

                  // Edit: Das ganze läuft in einer Schleife, die dann insgesamt 15 Sekunden läuft.
                  Zuletzt geändert von lennart; 22.06.2008, 21:23.

                  Kommentar


                  • #10
                    // Edit: Das ganze läuft in einer Schleife, die dann insgesamt 15 Sekunden läuft.
                    d.h? Wie oft wird die Query denn ausgeführt? Könntest du mal nur die eine query in myadmin testen und die Zeit posten?

                    Kommentar


                    • #11
                      Vielen Dank für deine Hilfe bisher!

                      Original geschrieben von TobiaZ
                      d.h? Wie oft wird die Query denn ausgeführt? Könntest du mal nur die eine query in myadmin testen und die Zeit posten?
                      Der Query wird im Moment ca. 50 Mal ausgeführt. Lässt sich leider nicht anders lösen.

                      Query: mysql> SELECT sv, timestamp FROM sensordata WHERE host = 24 AND st = 1 ORDER BY timestamp DESC LIMIT 1;

                      Ergebnis: 1 row in set (0.65 sec)

                      Kommentar


                      • #12
                        Naja, das sieht ja schon um einiges unberuhigender aus.

                        Schieb mal nen EXPLAIN hinterher.

                        Kommentar


                        • #13
                          Original geschrieben von TobiaZ
                          Naja, das sieht ja schon um einiges unberuhigender aus.

                          Schieb mal nen EXPLAIN hinterher.
                          http://pastie.org/219999

                          Kommentar


                          • #14
                            Danke für deine Hilfe, TobiaZ!

                            Habe eben im #sql Channel auf Freenode die Lösung gefunden. Habe noch einen Index auf host erstellt. Das wars, jetzt läuft es total fix.

                            Kommentar

                            Lädt...
                            X