phpbar.de logo

Mailinglisten-Archive

[dbs] MySQL: Löschen beschleunigen?

[dbs] MySQL: Löschen beschleunigen?

Hans Egg hans.egg at swissonline.ch
Mit Sep 3 14:36:19 CEST 2008


Hallo Michael

Am 03.09.2008 um 12:29 schrieb Michael Diederich:

> Nach meinem Verständnis kann man den lesenden Zugriff über Indexes
> verbessern, aber beim manipulieren von Einträgen müsste der Index
> bremsen.

Stimmt, aber das sequentielle Suchen eines Wertes in einer Million  
Datensätze ist auch nicht gerade billig! Wenn du am häufigsten neuere  
Einträge löschst, ist das verheerend. Es müssen über eine Million  
Werte gelesen werden.

Ich würde jedenfalls einen Index für den primary_key erstellen. Damit  
sind SELECT und DELETE wesentlich schneller. INSERTs werden zwar bei  
einem Index mit wachsender Zeilenzahl teurer (log n). Bei 10  
Millionen Datensätzen ist das die 7-fache Zeit, also immer noch  
wahnsinnig schnell im Vergleich zum sequentiellen Lesen (n).

> Hat jemand eine Idee wie man das Löschen beschleunigen kann?

Mittels Index ;-(

Evtl. hast du mehr Möglichkeiten, die INSERTS zu optimieren.

http://dev.mysql.com/doc/refman/5.1/de/insert-speed.html

Alternativ kannst du prüfen ob du periodisch eine neue Tabelle  
erstellen kannst, falls die Daten ohne Ende wachsen.

Just my two cents
Hans

php::bar PHP Wiki   -   Listenarchive