Nadie carga en memoria 5.000.000 de productos.
¿para qué querrías cargar sermejante masa de datos en cada visualizacion ede cada clietne?
Se hacen por busquedas de filtros, y de todos modos tener 60 columnas para cada uno de los 5.00.000 de productos tampoco parece tener sentido.
Da la impresión que la propia tabla de productos que tienes simplemente está
mal definida .
Creo que deberías documentarte un podo mas en el desarrollo de modelos de datos orientados a comercio electrónico. Hay muchos ejemplos accesibles.
Por ejemplo:
O podría ser orientado a ventas de clientes: