WordPress, PHP, JavaScript, Web 2.0, Gaming, Motorräder, Fotografie, Piratenpartei, Privates

mysql

MySQL, die Indizes und der Typo3 Kickstarter

Di 03 Nov. 09 # Permalink

Bei einem Kundenprojekt (ein Veranstaltungskalender-Modul in Typo3) wunderte ich mich kürzlich, warum im Echtbetrieb die Querys teilweise ewig lang laufen. Da ich die Datenbankstruktur mit dem Typo3 Kickstartet erzeugt hatte, ging ich davon aus, dass es an den Indizes nicht liegen kann, die werden vom Kickstarter schließlich mit gesetzt.

Also probierte ich ein wenig rum, versuchte die Querys zu optimieren, den Code umzustricken, mit dem Ergebnis, dass alles nichts brachte. Eine Query von 3000 Datensätzen dauerte teilweise Minuten lang – was natürlich in der Rechnerwelt mehr als eine Ewigkeit ist. Okay, es wurden ziemlich viele Tabellen per Join hinzugezogen, aber 3000 Datensätze… pah, das ist doch wirklich lächerlich.

Also bin ich nochmal die Tabellenstruktur durchgegangen und siehe da: Zwei ID-Felder waren nicht mit einem Index versehen. Nach dem Hinzufügen dauert die Query dann 0,00 Sekunden. So soll es sein.

Blöder Typo3 Kickstarter. Wer damit arbeitet, aufgemerkt: Das Ding vergisst bei bestimmten Konstellationen die Indizes, also von Hand anlegen, sonst kann euch die Query bei komplexen Joins um die Ohren fliegen.

Das Veranstaltungskalender-Modul ist übrigens ziemlich pornös geworden: So mit Drag n Drop und Medienupload im Overlay, halt alles was man so mit Scriptaculous + Prototype so machen kann und Typo3 von Haus aus nicht mitbringt. Außerdem kann der Kalender wiederholende Termine an bestimmten Wochentagen, wobei die Eingabe richtig schön einfach ist. Ist auf jeden Fall eine nette GUI geworden.

Übrigens mag ich Typo3 nicht, die API ist scheiße dokumentiert und die Icons im Backend ätzend fitzelig und alles andere als selbsterklärend. Ich hoffe es ist bei der Entwicklung dieses einen Moduls geblieben. Schade, dass wir in der Firma kein WordPress anbieten. Da hätte ich richtig Spaß!