Обычно у вас разные контейнеры для разных экземпляров таблиц. Хотя в некоторых случаях вам может понадобиться использовать один и тот же экземпляр контейнера между различными компонентами. Это вполне возможно и приемлемо, если вы понимаете последствия: Фильтрация и сортировка выполняются на уровне контейнера, что означает, что если вы примените фильтр в контейнере в одном представлении, а затем перейдите к другому представлению, контейнер будет там тоже фильтруется. Непонимание этого может привести к «странным ошибкам» и множеству WTF.
Преимущества совместного использования одного и того же экземпляра контейнера связаны с минимизацией объема памяти вашего приложения - чем больше контейнеров у вас есть, тем больше памяти вы будете потреблять. Обратите внимание, что и таблица, и SQLContainer - это ленивая загрузка - это означает, что таблица не будет отображать больше строк в браузере, чем то, что необходимо для заполнения области таблицы (+ некоторый буфер), SQLContainer не будет получать больше строк, чем то, что необходимый для таблицы -> ваш контейнер фактически не будет содержать в памяти более нескольких десятков элементов (* ваш пробег может отличаться).
С точки зрения производительности (CPU), в вашем случае я не вижу большой выгоды от совместного использования одного и того же экземпляра контейнера в нескольких представлениях, поскольку каждый раз, когда вы переключаете представление, вам необходимо применять новые фильтры, тем самым запуская новый запрос к базе данных и выборку необходимых данных при каждом переключении просмотров - даже при возвращении к просмотру, который ранее был уже отфильтрован.
Итак, как насчет этой лучшей практики? Лично я бы начал с нескольких экземпляров контейнера (по одному на просмотр), сделал некоторые профилирования и оптимизировал, если это необходимо. Преждевременная оптимизация - это корень всего зла.