Reihenfolge von ORDER und LIMIT

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

  • Reihenfolge von ORDER und LIMIT

    folgende eher theoretische Frage:

    Ich will aus einer mySQL-Datenbank eine gewisse Anzahl Daten auslesen. Diese sollen nach Datum geordnet sein (also neueste Einträge zuerst etc.) Nun sind die aber am Ende der Datenbank. Dazu kann ich ja dann folgendes Konstrukt nutzen:

    SELECT ... FROM ... WHERE ... ORDER BY ... DESC LIMIT ... ...

    mein Problem dabei ist: wird das ORDER nur auf die durch das LIMIT eingegrenzten Datensätze angewandt oder wird erst das ORDER ausgeführt und dann das LIMIT auf die geordneten Datensätze angewand?

    desweiteren: lohnt es sich für das Datum ein Index anzulegen, da ich die Daten ja immer nach Datum geordnet ausgeben will?

    Danke fürs Lesen *g*

  • #2
    Re: Reihenfolge von ORDER und LIMIT

    Original geschrieben von comm_a_nder
    mein Problem dabei ist: wird das ORDER nur auf die durch das LIMIT eingegrenzten Datensätze angewandt oder wird erst das ORDER ausgeführt und dann das LIMIT auf die geordneten Datensätze angewand?
    erst order, dann limit.

    aber warum testest du sowas nciht einfach ganz fix?

    Original geschrieben von comm_a_nder
    desweiteren: lohnt es sich für das Datum ein Index anzulegen, da ich die Daten ja immer nach Datum geordnet ausgeben will?
    ein index lohnt sich schon, denke ich. gerade wenn du auch sehr viele daten in der tabelle hast.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      meiner Meinung nach lohnt sich aber der Index nur, wenn das indizierte Feld im where-Teil gefragt ist. Für's Sortieren bring das nix.

      Kommentar


      • #4
        Re: Re: Reihenfolge von ORDER und LIMIT

        Danke für die schnelle Antwort

        Original geschrieben von Abraxax
        aber warum testest du sowas nciht einfach ganz fix?
        hatte gerade keine Datenbank zur Hand

        zum Index: ich dachte, der wirkt sich auch irgendwie positiv auf das ORDER aus?

        Kommentar


        • #5
          ich glaube, ich hab das mal auf der letztjährigen PHP-Konferenz gehört. Hab's aber auch noch nie genau nachgeschaut oder getestet.

          Bei MySQL steht halt immer als Empfehlung, dass auch nur Felder indiziert werden sollen, die im Where-Teil vorkommen können.

          Kommentar


          • #6
            Original geschrieben von BrainBug
            Bei MySQL steht halt immer als Empfehlung, dass auch nur Felder indiziert werden sollen, die im Where-Teil vorkommen können.
            .... was bei ihm ja durchaus zutreffen wird. schliesslich will er ja nicht immer alle daten auslesen und mit LIMIT beschränken müssen. zuminstest wäre das nicht ratsam.

            bei z.b. einer monatlichen ausgabe, müsste er permanent ein WHERE auf datum eintragen. oder sehe ich da was falsch?
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              ja, schon, aber so meinte ich das auch nicht. Meine Anmerkung ging eher dahin, dass ein Index auf datum eher ausbremst, falls diese Feld "nur" zum Sortieren benutzt wird. Wenn es wie in dem beschriebenen Fall auch im Where-Teil vorkommt, dann ist's natürlich ratsam.

              Kommentar


              • #8
                ja, schon, aber so meinte ich das auch nicht. Meine Anmerkung ging eher dahin, dass ein Index auf datum eher ausbremst, falls diese Feld "nur" zum Sortieren benutzt wird.
                da stimme ich dir zu...
                Wenn es wie in dem beschriebenen Fall auch im Where-Teil vorkommt, dann ist's natürlich ratsam.
                ich gehe mal davon aus, das er sowas auch machen will. schliesslich kann man ja nicht alle (was weiss ich wieviele) datensätze immer auslesen wollen...

                gibt es nicht die möglichkeit einen index vorrübergehend abzustellen? somit könnte er bei der normalen ausgabe ohne index arbeiten und bei einer datumssuche den index verwenden.

                wenn ich mich nicht täusche, geht das doch. oder? (bin grad zu faul, um das für ihn zu suchen... )
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  bei MySQL? Ist mir neu. Falls dem so ist, würde es mich sehr interessieren.

                  Kommentar


                  • #10
                    Original geschrieben von BrainBug
                    bei MySQL? Ist mir neu.
                    ich kann mich auch irren, aber ich meine sowas schon mal irgendwo gehört zu haben. kann aber auch oracle gewesen sein..
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      Natürlich werden auch beim ORDER BY Indizes verwendet ... lies die Doku und Du wirst schlau werden ... http://www.mysql.com/doc/en/ORDER_BY_optimisation.html
                      carpe noctem

                      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                      Kommentar


                      • #12
                        lies das deutsche Manual und du wirst den Eintrag nicht finden. Zeigt sich mal wieder, dass sowohl beim MySQL- als auch beim PHP-Manual die englische Version zu bevorzugen ist.
                        Danke für den Hinweis.

                        Kommentar


                        • #13
                          Genau ... nichts ist besser als das original ... außer dem was kommt ...
                          carpe noctem

                          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                          Kommentar


                          • #14
                            also ich will bei mir die Daten eigentlich immer nur mit LIMIT auf eine bestimmte Anzahl beschränkt und nach Datum geordnet ausgeben.

                            Nur zum Editieren der Daten sollen sie bei Bedarf komplett ausgegeben werden.

                            Nun dachte ich bisher, das durch den Index auf das Datum das Sortieren nach dem Datum für die DB viel einfacher wird? Vielleicht sollte ich doch noch mal meine Vorlesungsmitschriften rausholen und durchlesen *g*

                            Kommentar

                            Lädt...
                            X