2010-02-09 3 views
0

Я проектирую базу данных в PostgreSQL на выделенном сервере. Я хочу, чтобы некоторые сложные запросы выполнялись часто, а результаты были доступны для клиентов ODBC/JDBC, таких как MS-Access или программное обеспечение для создания отчетов.View vs ODBC query

Как я вижу, у меня есть возможность определить VIEW в PostgreSQL и импортировать его с помощью ODBC или определить запрос в клиенте ODBC и импортировать базовые таблицы.

Что лучше? Есть ли другие варианты, которые мне не хватает?

ответ

1

Я не уверен, что вы подразумеваете под «импортом». Представление представляет собой, по существу, предопределенный запрос, который вы можете выбрать из данных, как из таблицы. Когда вы выполняете запрос SELECT, независимо от того, обращаетесь ли вы непосредственно к таблицам данных или через представление, вам возвращаются только результаты запроса.

Если вам нужно выполнить тот же запрос от разных клиентов, может быть хорошей идеей определить представление для этого запроса.

Делитесь и наслаждайтесь.

+0

Благодарим за освобождение этого. В деле клиента ODBC действительно нет лишнего «импорта». Как вы думаете, может быть разница в оптимизации SQL между этими двумя случаями? – thomaspaulb

+0

Нет, в PostgreSQL вид просто заменяет запрос, поэтому он будет оптимизирован так же, как и отдельный оператор. Если запрос достаточно длинный, что служебные данные синтаксического анализа являются измеримыми, это может иметь эффект - но это не будет иметь место, если запрос является * сложным *. В общем, не ожидайте измеримой разницы в производительности, если запрос будет таким же. –

1

Вы говорите, что у вас есть сложные запросы, которые создают вывод, который вы хотите использовать для целей отчетности.

Накопители, агрегаты и т. Д. Выполняются и хранятся в хранилище данных практически так же, как описано.

Если это то, что вы хотите, вы должны рассмотреть наличие таблицы, в которой хранится вывод запроса. Используйте программу планирования для запуска вашего ComplexQuery в соответствующее время и сохраните вывод в таблице.

Вы должны решить, зачем вам это нужно. Сложность запроса не является таким же фактором, как количество ресурсов, требующих сервер базы данных для выполнения запроса. Если это достаточно мало и это не отрицательно влияет на производительность, и вам нужны данные в реальном времени, используйте View. Если вы можете жить с периодически обновляемыми данными, которые быстро доступны и не накладывают большую нагрузку на сервер, перейдите к общей таблице.

+0

Спасибо, я подумал, что существует такая концепция, как «совокупные таблицы», но я не знал, что это так. – thomaspaulb

+0

Это скорее концепция Data Warehousing, чем концепция PostgreSQL. –

+0

Невозможно создать хранилище данных в PostgreSQL? – thomaspaulb