[TYPO3-UG Oesterreich] FE Userliste

Karl Nabinger k.nabinger at input.at
Thu Nov 23 17:19:44 CET 2006


Hallo!

Ohne Eulen nach Athen zu tragen (Wolfgang hat die Antwort ohnedies 
bereits gegeben) hier sind einfach die 2cents eines TYPO3 Rookies zum 
Gaudium der Profis:

Hölblinger Walter schrieb:

> SELECT count(*)
> FROM fe_users
> WHERE
> pid IN () AND 
 > fe_users.deleted=0 AND
 > fe_users.disable=0 AND
 > fe_users.starttime<=1164288261 AND
 > (fe_users.endtime=0 OR fe_users.endtime>1164288261)

Mit diesem Statement wird mit "pid IN ()" ein Wertebereich abgefragt, 
der nicht definiert wurde -  es fehlt einfach die Werteliste innerhalb 
der Klammern.
Da ist der MYSQL-SQL Preprozessor ohnedies gnädig, wenn er eine 
Fehlermeldung bringt, würde dieser "Fehler" nicht berücksichtiogt, würde 
ohnedies immer 0 (die Zahl Null) zurückgegeben.

> SELECT fe_users.*
> FROM fe_users
> WHERE
> pid IN ()AND 
 > fe_users.deleted=0 AND
 > fe_users.disable=0 AND
 > fe_users.starttime<=1164288261 AND
 > (fe_users.endtime=0 OR fe_users.endtime>1164288261)
> LIMIT 0,50

Das gleiche bei diesem Statement -- auch hier fehlt die Werteliste.
Was mich dabei allerdings noch mehr stört, ist das "fe_users.*" 
wohlwissend, dass es unglaublich bequem ist, alle Werte einer Tabelle 
zur Verfügung zu haben.
So das um ganzen Typo3 so sein sollte, läge hier ein riesen 
Optimierungspotential hinsichtlich Geschwindigkeit.

Mehr anzufordern als man wirklich braucht, ist IMO neben schlechtem Stil 
auch ein Laufzeitproblem, denn das Interpretieren ähnlicher 
SQL-Statements braucht fast immer gleich, das Auswählen der
Daten hängt vom Zugangsweg (das spielt der SQL-Optimizer mit) ab, aber 
beim Fetchen der Daten spielt einzig und allein die angeforderte 
Datenmenge eine Rolle.
Das Argument "ich hol mir ohnedies nur die ersten 50 rows" sticht 
insofern nicht, als dass auch diese Datenmenge noch optimiert werden könnte.

Das waren meine 2cent - bin gespannt auf die Reaktionen

ciao,
Karl



More information about the TYPO3-at mailing list