[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