Seite 1 von 1

Datenbankfeld mit serialize(array) schneller als JOIN?

Verfasst: 07.02.2007 00:08
von mgutt
Ich hatte eine Idee, mit der ich eine n:m Beziehung umgehen wollte, um vielleicht schneller zu sein.

Ähnlich wie bei phpbb_search_results speichere ich die gesuchten ids in einem Array und speichere sie in der Datenbank tabelle1 per serialize(array).

Nun brauche ich bei der Ausgabe keinen INNER JOIN mehr, sondern lese erstmal die Grunddaten aus, damit ich die normalen Daten beziehe und den Inhalt des Arrays.

Danach mit einer zweiten Abfrage erhalte ich die Informationen zu den ids der tabelle2:

Code: Alles auswählen

SELECT * FROM tabelle2 WHERE id IN(implode(', ', unserialize($array)))
D.h. anstatt einem INNER JOIN Konstrukt nutze ich zwei normale SELECTs.

Fragen:
- Sehe ich das richtig, dass ich dann schneller bin? (beide Tabellen werden mehrere tausend Einträge besitzen)
- Was mache ich, wenn in tabelle2 ids ändern oder löschen will. Wie ermittel ich dann, welche Einträge in tabelle1 die ids im serialized(array) haben, damit ich die Bedarf dort ebenfalls rauslöschen kann?

Gruß