Для понимания проблемы проведем аналогию с магазином.
Имеются товары со своим id. Просмотрев товар его id добавляется в соответствующую ячейку таблицы пользователя. При дальнейшем просмотре списка товаров, уже просмотренные исключаются с помощью NOT IN(...). Как быть если просмотрено тысячи товаров?
Для правильного вопроса надо знать половину ответа
Правильно организовать базу. Завести отдельную таблицу с полями `user_id` и `goods_id`, заносить в неё запись при просмотре товара, использовать INNER JOIN при выборке.
@Snewer фиг знает, как в MySQL, а в MSSQL может тормозить на больших количествах (...), если индексов нет и/или оптимизатору поплохело от общей нагрузки