Celkem o tom pochybuji - máte např. nějaká měření, kde SQL Server počítá skalární součiny rychleji než aplikace v C#?
Máte vy nějaká měření, že načíst všechna data z disku, přenést je po síti a pak je možná spočítat rychleji v C# je rychlejší, než načíst z disku jenom potřebná data, spočítat to možná pomaleji na SQL serveru a pak přenést po síti jenom výsledek? Je pozoruhodné, jak se pořád snažíte optimalizovat práci procesoru, ale zbytečné načítání z disku nebo přenosy po síti vám vůbec nevadí. Přitom disk a síť jsou ty hlavní brzdy, ty vaše výpočty vám procesoru udělá v době, kdy bude čekat na další síťový paket, a ještě se u toho bude flákat.
Nedělám, to, co popisujete.
Do aplikace v C# se posílá nejvýše 1 vektor (pro uživatele) vektory, s nimiž se budou dělat skalární součiny (pro produkty) tam již jsou. Někdy tam dokonce je i ten vektor pro uživatele. Navíc, pokud máte pouze jeden výdejový server (ta aplikace v C# běží na 1 serveru), tak nemusíte na SQL Server pokaždé posílat, kolikrát uživatel daný produkt viděl (zatímco, když to budete počítat na SQL Serveru, tak to musíte posílat po každé), díky čemu síťový i diskový provoz naopak ušetříte.
Pokud jste malý e-shop na sdíleném hostingu, tak v db ani nemusíte mít povolené UDF, takže to nespočítáte tak rychle. Pokud jste velký e-shop, tak relační databáze nemusí ustát aktualizaci těch vektorů - tj. budete používat nějakou NoSQL databázi, ve které to ovšem ani nemusí jít spočítat.