Sven Rautenberg: Rekursives Löschen von Foren inkl. Threads und Beiträgen

Beitrag lesen

Moin!

Wenn der Datenbestand nicht allzu groß ist, kannst du die Daten in einem Rutsch abfragen und die Auswertung auf dem Client machen. Ansonsten eben viele Statements absetzen.

Oh weia!

Aus Performancegründen würde ich exakt umgekehrt argumentieren. Wenn der Datenbestand klein ist, dann tut ein "SELECT ... WHERE parentId = ..." + "DELETE ... WHERE id =..." noch nicht sehr weh.

Aber es wird für die Datenbank nahezu unmöglich, wenn man tausend (oder mehr) Postings hat, und diese mit tausend SELECT und tausend DELETE zu löschen versucht. Gerade in so einem Fall ist es im Prinzip Pflicht, mit so wenig Querys wie möglich den maximalen Effekt zu erzielen. Im Idealfall also mit nur einem einzigen SELECT (die Eltern-Kind-Beziehung bastelt man sich dann im Speicher zusammen) und mit nur einem einzigen "DELETE ... WHERE id IN (1,2,3,...)".

Mehr als ein DELETE nur dann, wenn die zu erwartende Liste an IDs so groß wird, dass MySQL an die konfigurierte Grenze der maximalen Querygröße gelangt.

- Sven Rautenberg