Przebudowanie >1GB tabeli

0

Mam tabelę składającą się z kilku milionów rekordów, mającą taką strukturkę:

id | name             | something_else
1    aaa bbb c ddd   jfkdjf
2    bbb sd qwe       fndd
3    jakies slowa      jfkdsjf

I chciałem na podstawie tej tabeli, raz dziennie tworzyć kolejną tabelę zawierającą listę pojedyńczych słów z kolumny name, z odnośnikiem do id'ka, czyli np:

f_id | word
1    aaa
1    bbb
1    c
1    ddd
2    bbb
2    sd
2    qwe
3    jakies
3    slowa

Jak to zrobić wydajnie, żeby jak najmniej obciążyć tym bazę?

Myślałem o użyciu transakcji, w której pobierałbym do pamięci po 10 000 rekordów po kolei z pierwszej tabeli do momentu w którym wynik nie będzie pusty. I iterować po tych 10 000 dzieląc za każdym razem nazwę na pojedyńcze słowa. I przy każdej iteracji, znów iterować dla każdego pojedyńczego słowa, robiąc przy okazji inserta na nowej tabeli.

Ale podejrzewam, że takie coś będzie zbyt wolne. Są jakieś lepsze sposoby?

1

A nie możesz po prostu napisać zapytania SQL, które skopiuje dane z jednej do drugiej tabeli po drodze je przetwarzając tak jak chcesz?

0

albo dodać triggera, który będzie na bieżąco będzie aktualizował tą tabelę? Będzie to mniej obciążało bazę w jednostce czasu niż kopiowanie "na raz"

1 użytkowników online, w tym zalogowanych: 0, gości: 1