Tom: MySQL: Feldlänge bei der Abfrage begrenzen

Hello,

ich habe eine MySQL-Tabelle mit diversen Textfeldern.

Wenn die Datensätze nun seitenweise gelistet werden, sollen die Felder nicht in voller Länge ausgegeben werden, sondern z.B. nur die ersten 30 Zeichen.

Bisher frage ich immer mit

select 'substring(FELDNAME,1,$len) as FELDNAME'

ab. Gibt es eine bessere Lösung?

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau

  1. hi,

    Bisher frage ich immer mit

    select 'substring(FELDNAME,1,$len) as FELDNAME'

    ab. Gibt es eine bessere Lösung?

    LEFT() könnte u.U. ein Fitzelchen performanter sein, weil es sich nicht erst um die Ermittlung der Startposition kümmern muss. (Vielleicht aber auch nicht, evtl. "optimiert" MySQL LEFT und RIGHT intern ja auch so, dass die gleiche Routine wie für SUBSTRING aufgerufen wird ...)

    Davon ab fällt mir nichts ein, was diesbezüglich auf eine einzelne Spalte wirken könnte.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hello,

      Bisher frage ich immer mit

      select 'substring(FELDNAME,1,$len) as FELDNAME'

      ab. Gibt es eine bessere Lösung?

      LEFT() könnte u.U. ein Fitzelchen performanter sein, weil es sich nicht erst um die Ermittlung der Startposition kümmern muss. (Vielleicht aber auch nicht, evtl. "optimiert" MySQL LEFT und RIGHT intern ja auch so, dass die gleiche Routine wie für SUBSTRING aufgerufen wird ...)

      Was mich am meisten dabei stört, ist das "as FELDNAME" ...
      Aber sonst wird das Auswerten mittels PHP zu eklig.
      Kosten diese Aliase eigentlich auch Performance?

      Jedenfalls wird es wohl sinnvoller sein, gleich die Datenbank mit der Beschränkung zu beauftragen, als das ganze Feld erst ins Resultset zu jagen...  oder?

      Harzliche Grüße vom Berg
      http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau

      1. hi,

        Was mich am meisten dabei stört, ist das "as FELDNAME" ...
        Aber sonst wird das Auswerten mittels PHP zu eklig.

        Ggf. könnte man auf nummerische Indizes umsteigen, wenn sich die Spaltenauswahl im Select nicht (zu) häufig ändert.

        Kosten diese Aliase eigentlich auch Performance?

        Ich denke nicht.
        Das ist ja nur ein Bezeichner, unter dem dir ein Wert zurückgeliefert wird.

        Jedenfalls wird es wohl sinnvoller sein, gleich die Datenbank mit der Beschränkung zu beauftragen, als das ganze Feld erst ins Resultset zu jagen...  oder?

        Eigentlich schon.
        ("Eigentlich", weil die Arbeit des "Abschneidens" ja irgendwer machen muss - entweder die DB, oder dein Script. Aber da diese Aufgabe eine absolut anspruchslose ist, kann das problemlos die DB machen. Mehr Daten als eigentlich benötigt erst mal vom DB-Server an Webserver/Script zu übertragen, wäre in der Tat unsinnig.)

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }