Я хочу создать «представление», чтобы исключить тот же трехстрочный подзапрос из примерно 90 запросов в приложении, над которым я работаю.
Проблема в том, что подзапрос содержит условие на основе переменной.
SELECT * FROM items WHERE id NOT IN (
SELECT item_id FROM excluded_items WHERE user_id = 123
);
Если бы это не было переменной, я мог бы просто сделать представление и покончить с этим.
Хотя я не уверен, что делать в этом случае. Принимая тот же менталитет за представлением, я испытываю желание создать хранимую процедуру, которая возвращает желаемый набор записей, чтобы ее можно было назвать примерно так:
SELECT * FROM user_items(123);
Теперь у меня есть единственное место, чтобы обновить исключение этого элемента и любые другие условия, однако я не уверен, как повлияет индексирование, если я хочу объединить результаты этого SP с другими таблицами?
Так это хорошая / плохая практика? Есть ли другой способ сделать это, или я должен просто смириться с этим и продолжать реплицировать этот подзапрос?