von xrstf » 6. Okt 2009, 15:17
Dieses Vorgehen mit dem Kopieren kann so nicht funktionieren. Jedes Slice ist über die Spalten re_article_slice_id und next_article_slice_id mit einer doppelt verketteten Liste mit seinem Vorgänger und Nachfolger verbunden. Da beim INSERT...SELECT neue Primär-IDs erzeugt werden, müssen auch für jeden einzelnen Datensatz (!) diese Zeiger-IDs angepasst werden.
Dies trifft nur auf Artikel mit mehreren Slices zu. Wenn nur ein Slice pro Artikel vorhanden ist, sind keine Zeiger-IDs gesetzt und das Kopieren ist kein großes Problem. Andernfalls:
Wir haben eine derartige Funktion in einem Extra AddOn (erstal nur 4.1, an 4.2-Kompatibilität arbeiten wir noch) implementiert, allerdings ist der Vorgang sehr rechenintensiv für die Datenbank, da leider keinerlei sinnvolle Indexe auf rex_article und rex_article_slice gesetzt wurden. So dauerte schon lokal das Kopieren von 50 Artikeln von einer Sprache in zwei andere knapp 15 Sekunden. Daher geht das AddOn bei der Installation daher und verändert die Datenbank derart, dass mehr Indexe gesetzt sind.
Grüße,
Christoph
User was banned for this post. 