Witam, mam następujące pytanie. Posiadam baze danych w której docelowo bedzie znajdowalo wiele danych. Głównie chodzi mi o produkty, jak narazie mam ich około 300 tysiecy lecz to tylko z jednego xml'a testowego. Docelowo bedzie ich około 10 milionów i tu powstaje problem nastepujący. Mój klient zazyczył sobie jego wzór xml'i z produktami które bedą importowane do bazy. Tabela z produktami wyglada następująco :

id, nazwa, ..(tutaj reszte niezbednych kolumn)....., grupa

i własnie rozchodzi się o kolumnę 'grupa' która zawiera kod grupy do której należy produkt czyli podkategorii. Wygląda on następująco dla przykładu 'GHG-RRR'

Tabela z podkategoriami wyglada nastepująco :

id, id_rodzica, grupa, nazwa_wlasciwa(np. płyty główne)

Tabela z nazwami właściwymi kategorii zawiera wylacznie id i nazwe wlasciwa głównych kategorii czyli id_nazwa


i teraz chce pobierac sobie wszystkie produkty należące do kategori głównej np. Komputery czyli muszę zebrac wszystkie pola 'grupa' z tabeli podkategorie gdzie id_rodzica = id dla Komputery z tabeli wlasciwej nazw głównych kategorii a nastepnie po zebraniu wszystkich 'grup` czyli bedzie tego wynikiem np. array('KCK-ADG', 'RAM-DIM, 'HDD-SAT'),
muszę pobrac z tabeli produkty wszystkie produkty ktore w polu grupa zawieraja takie wartosci, i teraz pytanie jak to zrobić naoptymalniej przy takiej ilosci produktow ? i czy te tabele sa dobrze zaprojektowane ?

zrobiłem taki klucz

ALTER TABLE pod_kategorie
ADD FOREIGN KEY (id_rodzica)
REFERENCES kategorie (id)


co odzwierdziedla przypasowanie nazw podkategorii do nazwy kategorii głowiej, lecz szczerze nie wiem co dalej poczynic, nie mam problemu z pobraniem tych produktow na podstawie tych danych lecz nie jest to optymalne moim sposobem napewno i nie jest to zrobione jak powinno byc jak ma byc szczery. Proszę was o poradę i z góry dziekujęza pomoc.