22.01.2013, 12:32
Mit solchen Aussagen zum Thema Performance wäre ich sehr vorsichtig, GreenDragon.
Im Prinzip kommt es ausschließlich auf die Formulierung der Datenbankabfrage an wie schnell selbige abgearbeitet wird (Datenbankgröße ist zweitrangig). Wenn du Daten aus der Datenbank löscht, wird lediglich der entsprechende Speicher freigegeben. Es wird jedoch nicht jeder Eintrag bitweise mit nullen überschrieben. (Es erfolgt kein 'sicheres' löschen)
Wenn du z.B. ein DELETE FROM 'users' WHERE id > 10 ausführen würdest bei einer user-db mit mehr als 10.000 Einträgen, würde die Datenbank nur müde lächeln und binnen Sekunden, wenn nicht schneller den query ausführen.
Hast du allerdings komplexere Formulierungen, Joins und Abhängigkeiten (Fremdschlüsselprüfung) in einem Query, sieht die Sache schon ganz anders aus.
Analog: Ein Drop Table / Truncate Table geht auch schneller, als wenn du ein DELETE -Statement schreibst, in welchem du jede einzelne ID eines Datensatzes angibst, der zu löschen ist.
Da du von 10 Seiten sprachst, nehme ich an, dass du das löschen über PHPMyAdmin erledigt hast? Dort würde nämlich, wenn du die jeweiligen Datensätze über die Übersicht markierst im Endeffekt auch ein DELETE-Statement mit WHERE ID = <Datensatz_ID> ausgeführt werden, was bei 200 IDs auch entsprechend langsam ist.
Um es mal etwas konkreter zu zeigen, einmal ein Beispiel. Nehmen wir einmal deine 200-Einträge einer Tabelle, die meinetwegen 5000 Einträge hat.
Dabei wäre
deutlich langsamer als
@UnkreativerUser:
Wie StefanT schon anmerkte gibt es eine Funktion im ACP für deine Problemstellung. Diese würe im Endeffekt nach der zweiten von mir beschriebenen Methode arbeiten. Schematisch etwa folgendermaßen:
Das ist entsprechend auch um ein vielfaches performanter, als alles über die Moderations-Optionen zu löschen.
MfG
Raphael
Im Prinzip kommt es ausschließlich auf die Formulierung der Datenbankabfrage an wie schnell selbige abgearbeitet wird (Datenbankgröße ist zweitrangig). Wenn du Daten aus der Datenbank löscht, wird lediglich der entsprechende Speicher freigegeben. Es wird jedoch nicht jeder Eintrag bitweise mit nullen überschrieben. (Es erfolgt kein 'sicheres' löschen)
Wenn du z.B. ein DELETE FROM 'users' WHERE id > 10 ausführen würdest bei einer user-db mit mehr als 10.000 Einträgen, würde die Datenbank nur müde lächeln und binnen Sekunden, wenn nicht schneller den query ausführen.
Hast du allerdings komplexere Formulierungen, Joins und Abhängigkeiten (Fremdschlüsselprüfung) in einem Query, sieht die Sache schon ganz anders aus.
Analog: Ein Drop Table / Truncate Table geht auch schneller, als wenn du ein DELETE -Statement schreibst, in welchem du jede einzelne ID eines Datensatzes angibst, der zu löschen ist.
Da du von 10 Seiten sprachst, nehme ich an, dass du das löschen über PHPMyAdmin erledigt hast? Dort würde nämlich, wenn du die jeweiligen Datensätze über die Übersicht markierst im Endeffekt auch ein DELETE-Statement mit WHERE ID = <Datensatz_ID> ausgeführt werden, was bei 200 IDs auch entsprechend langsam ist.
Um es mal etwas konkreter zu zeigen, einmal ein Beispiel. Nehmen wir einmal deine 200-Einträge einer Tabelle, die meinetwegen 5000 Einträge hat.
Dabei wäre
Code:
DELETE FROM <tabelle> WHERE id = 1 OR id = 2 OR id = 3 OR id = 4 OR .....
deutlich langsamer als
Code:
DELETE FROM <tabelle> WHERE id >= 1 AND id <= 200
@UnkreativerUser:
Wie StefanT schon anmerkte gibt es eine Funktion im ACP für deine Problemstellung. Diese würe im Endeffekt nach der zweiten von mir beschriebenen Methode arbeiten. Schematisch etwa folgendermaßen:
Code:
DELETE FROM posts WHERE user_id = <id>
Das ist entsprechend auch um ein vielfaches performanter, als alles über die Moderations-Optionen zu löschen.
MfG
Raphael