Касаемо того, что делать с производительностью. Во-первых, просмотры хранить и в БД, и в кэше. Щас объясню, почему. Когда вы будете увеличивать счётчик просмотра, работая напрямую с БД, у вас такая операция будет (может) сильно замедлять загрузку страницы. Лично сталкивался с таким кейсом, сокращая время загрузки с 30 до 1 секунды. Работать нужно с кэшем, периодически обновляя данные в БД. И второе - сделать структуру таким образом, чтобы поиск осуществлялся быстро. Например, использовать хэш-таблицу