Zitat:
Ein Delete mit 'Where' dürfte mit (verwendetem) Index und ausreichender Selektivität der Bedingung auch mal gern schneller sein.
Es müssen aber alle Indizes (der Tabelle) mit angepasst werden.
Das ist richtig.
Es müssen u.U. sogar noch mehr Indizes als nur die der einen Tabelle angepasst werden, wenn z.B. Cascade Delete Constraints verwendet werden. Wenn in einem CRM System ein(!) Personendatensatz gelöscht wird, betrifft das dann auch alle abhängigen Datensätze, das führt u.a. zu einem Vielfachen an Löschoperationen und erneuten Indexkorrekturen. Gleichzeitig können die vorhandenen Indizes der Fremdschlüssel aber zur Lokalisierung der zu löschenden Datensätze verwendet werden und Summa Summarum ist es immer noch schneller als ohne Indizes und den dann notwendigen Full Scans.
Ich bin mir aber immer noch sicher, dass diese Diskussion hier im Thread fehlplaziert ist. Es ging mir darum Indizes und ihre Verwendung von Schlüsselfeld Definitionen zu unterscheiden. Und ein Index hat nunmal (fast) keine funktionale Bedeutung für ein Datenmodell bzw. eine Datenbank.
Hier können jetzt Anmerkungen gemacht werden, dass man gar keine Datensätze löschen soll...