Это зависит (это общий ответ на любые «общие» вопросы, не так ли? :)).Вам нужно оценить компромиссы, чтобы увидеть, что лучшее решение для ваших нужд.
Представления в основном просто переписывают запросы (в MySQL), поэтому использование представления будет выполнять агрегацию / денормализацию при каждом запуске запроса.Это может сделать ваши запросы медленнее, чем вы хотели бы.Кроме того, если ваши процедуры действительно сложны, возможно, нецелесообразно пытаться поместить эту логику в представление.
Хранимые процедуры выполняют работу один раз, поэтому запросы будут выполняться быстрее.Но тогда ваши обновления не будут отображаться автоматически.Поэтому я думаю, что ответ зависит от того, как часто данные меняются, как часто выполняются запросы и насколько важна производительность запросов.
Что касается альтернативных предложений, вы также можете запустить свои хранимые процедуры, используя events , если ваши обновления данных выполняются регулярно, и вы просто пытаетесь уберечь себя от ручного запуска процедур.
Другой вариант - иметь таблицы денормализации / агрегирования, которые обновляются с помощью триггеры .При обновлении данных в исходной таблице триггеры будут автоматически поддерживать текущие значения агрегированных таблиц.
Здесь - это ссылка на документацию для хранимых процедур, представлений, триггеров и событий.