Witam,Mam nastepujaca baze danych:- PostgreSQL- wiele roznych relacji miedzy tabelami- w bazie jest juz sporo danych (wazy okolo 2 GB)Problem z baza jest nastepujacy:- baza powolno dziala- zamiast kluczy glownych (primary key) numerycznych uzywane sa klucze typu VARCHAR (wiem, ze zaglada, ale nie ja to projektowalem)Zalezy mi na przeksztalceniu bazy na taka, w ktorej klucze glowne beda numeryczne, a relacje i zbior danych w bazie zachowane. Pytanie jak najprosciej sie za to zabrac..
0
0
Ile masz tych tabel? Zrób kopie bazy. Następnie pozamieniaj w tabelkach varchara
na id SERIAL
, albo sekwencja: :)
CREATE TABLE example(
id integer NOT NULL,
nazwa text
);
CREATE SEQUENCE exapmple_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE ONLY example ALTER COLUMN id SET DEFAULT nextval('exapmple_id_seq'::regclass);
0
- Tworzymy kopie struktury bazy danych dodając w tabelach kolumnę id jako primary. Nie nakładamy żadnych relacji. ZERO NULL NIC.
- Piszemy prosty program, który będzie przenosił dane w najprostszy i najprymitywniejszy sposób - Insert from select.
- Odtwarzamy złączenia pomiędzy tabelami zamieniając stare klucze na nowe. I tu jest pies pogrzebany, bo trzeba by rozrysować strukturę zależności tabel i robić ten etap od dołu tzn. najpierw tabele z odwzorowaniami na siebie same i bez odwzorowań, a potem tabele z odwzorowaniami na inne tabele.
- Odtwarzamy indeksy, wyzwalacze
- Poprawiamy procedury składowane i funkcje tak by działały z nową strukturą.