La clave esta en la estructura de la bbdd " para cada objeto de la vida real una tabla " --- la separación de datos te permite un mejor manejo de los mismos
para tu caso si tiene un buen diseño de la BBDD no tendrás problema con esa consulta ahora si tu diseño es deficiente entonces evalúa si te es mas repudiable el cambio como dices
Complicado mmm deprede de la estructura de tu BBDD ...
Básicamente no parece complicado es solo disponer de una tabla en la que almacenes id de usuario y id de artículos ( suponiendo que ya tienes los usuarios por un lado y los artículos por otro )
digamos el campo articulo, un varchar de 150 al que ingresas un registro del tipo
donde
n es un id del articulo y
- es un separador luego recuperas los campos con explode()
con el varchar te aseguras que se ingresen los registros sin importar la cantidad o diferencias entre los artículos que le correspondan a los usuarios.
y luego la session es de lo mas simple almacenas el id y haces el query .
no se si me entiendes ..