MySQL: Feldlänge bei der Abfrage begrenzen
Tom
- datenbank
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
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
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
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