Hallo,
Da stimme ich voll und ganz zu, aber das ist ja ein "Wartungsscript", welches nur nhin und wieder auf die DB "losgelassen" wird. Angenommen da stehen 10.000 Einträge in der DB - was ich schon bezweifele - findet das Select-Statement vielleicht 10, womöglich 100 tote Datensätze. Wenn Du jetzt in einer Schleife 100 DELETEs auf die DB losläßt dauert das vermutlich nichtmal eine Sekunde. Was ist das Problem dabei?
Wobei mir "wenn aus irgendwelchen Gründen Leichen entstehen" (siehe Originalposting) schon zu denken gibt. Der eigentliche Fehler liegt IMHO im bestehenden Code. Das was hier diskutiert wird, ist eigentlich Verschleierungsmethodik.
Es ist oft das Problem(auch meins) das man es immer perfekt will, das es auch in einer DB mit mehreren Mio Datensätzen "effizient" funktionieren würde, aber wenn diese Zahel doch sowieso niemals erreichen wird, warum sich dann so viele Sorgen machen, außerdem wäre die einzige Alternative auf eine andere RDBMS umzustellen, und ob sich das lohnt?
Grundsätzlich bin ich auch für die Verhältnismäßigkeit zwischen Aufwand und Zweck. Allerdings habe ich die Erfahrung gemacht, daß genau diese Argumentation al Rechtfertigung für"Huschpusch"-Lösungen herangezogen wird. Meist ist etwas mehr Sorgfalt bei jeder Zeile, die man schreibt, schon der richtige Ansatz.
Und noch eine Bemerkung zur Wahl der Mittel: Eine Datenbank, die keine Constraints und Transaktionen unterstützt, würde ich nur sehr, sehr vorsichtig einsetzen, da die Gefahr von Dateninkonistenzen praktisch schon mit gelifert ist. Wobei allein das Wissen um die Gefährlichkeit dieser Mängel auch schon ausreichen kann, entsprechend defensiv zu programmieren.
Grüße
Klaus