Nechcem ziadne vendor lok riesnie, potrebujem aby som to dokazal implementovat na akejkolvek relacnej databaze.
Tak to máš smůlu, protože pro SQL to je vyloženě nevhodná úloha, jelikož to potřebuje multidimenzionální index.
Máš dvě možnosti, buďto se funkcionality (alespoň co se týče real-time výpočtu) vzdát, anebo použít nějaké rozšíření SQL, kde vždycky bude vendor lock-in.
Osobně bych Ti radil to druhé, protože vendor-lock na postgres ničemu nevadí: je to opensource databáze a navíc z opensource nejlepší.
Tedy jestli někdy budeš chtít migrovat, tak není důvod migrovat na jakoukoli jinou opensource databázi. A jestli někdy budeš migrovat na nějakou proprietální drahou databázi, tak přepsat tendle kousek kódu je to nejlevnější, co budeš řešit...
PS: Samozřejmě můžeš udělat nějaké "heuristické algoritmy", např. najít si nejlepší shodu pro každou barvu a ořezané výsledky seřadit dle vypočítané shody už na omezeném datasetu, ale pokud to chceš dělat pořádně a rozumně rozšiřitelně a použitelně, tak se těmdle polovičatejm řešením vyhni.