Если вы можете изменить макет базы данных, чтобы вместо него использовать разбиение , это, вероятно, будет правильным решением. Тогда вы можете просто получить доступ к «основной» таблице, как если бы это была одна таблица, а не несколько подтаблиц.
Вы можете создать представление, объединяющее таблицы с дополнительным столбцом, соответствующим таблице, из которой оно получено. Если во всех ваших запросах указано значение для этого дополнительного столбца, планировщик должен быть достаточно умным, чтобы пропустить сканирование всех остальных таблиц.
Или вы можете написать функцию в PL / pgSQL , используя команду EXECUTE для создания соответствующего запроса после извлечения имени таблицы. Функция может даже возвращать набор , поэтому она может быть использована в предложении FROM так же, как и в случае ссылки на таблицу. Или вы можете просто сделать такую же конструкцию запроса в логике приложения.