V SQL (Firebird SQL) bazi imam 3 tabele: Product (podatki o izdelkih), Property (možne lastnosti izdelkov) in Product_Property (lastnosti posameznih izdelkov, vmesna tabela)

Trenutno skupaj sestavljam filter (.NET web forms), ki bo na podlagi izbranih lastnosti vrnil spisek izdelkov, ki ustreza kriteriju. Do te točke je vse fine and dandy.
Problem pa se pojavi pri scenariju, ko gre za ogromno bazo: cca 200k izdelkov (Product), 40k lastnosti (Property) in približno 8 mio lastnosti izdelkov (Product_Property). Samo filtriranje traja precej predolgo, če program že vmes ne odleti zaradi premalo pomnilnika.
Ima kdo kakšen namig, izkušnjo, karkoli kako se te zadeve lotit? Kot že rečeno, gre za FirebirdSql bazo, na katero se .NET aplikacija poveže s pomočjo Firebird.NET providerja.
Hvala!
p.s.: Ker gre za integracijo na obstoječ sistem, bilokakšna prekopavanja baze ne pridejo v poštev. Lahko se doda kakšna zadeva, obstoječih tabel pa se ne sme dotikat.