Q на pgsql - PullRequest
       18

Q на pgsql

0 голосов
/ 26 сентября 2008

Я новичок в pgsql. У меня есть несколько вопросов об этом:

1) Я знаю, что можно получить доступ к столбцам с помощью <schema>.<table_name>, но когда я пытаюсь получить доступ к столбцам, например, <db_name>.<schema>.<table_name>, возникает ошибка типа

Cross-database references are not implemented

Как мне это реализовать?

2) У нас более 10 таблиц и 6 из более 2000 строк. Хорошо ли хранить их все в одной базе данных? Или я должен создать базы данных, чтобы поддерживать их?

3) Из приведенных выше таблиц вопросов, которые имеют более 2000 строк, для определенного процесса мне нужно несколько строк данных. Я создал представления, чтобы получить эти строки. Например: таблица содержит сведения о сотрудниках, они делятся на 3 типа; менеджер, архитектор и инженер. Совершенно очевидно, что эта таблица не получает каждый процесс ... процесс использует для чтения данных из него ... Я думаю, что есть два способа получить данные SELECT * FROM emp WHERE type='manager', или я могу создать представления для менеджера, архитектора и инженера и получить данные SELECT * FROM view_manager

Можете ли вы предложить лучший способ сделать это?

4) Требуется ли для представления также место для хранения, как для таблиц?

Спасибо заранее.

Ответы [ 3 ]

1 голос
/ 01 октября 2008
  1. Кросс-база данных существует в PostGreSQL уже много лет. Вы должны добавить префикс имени базы данных к имени базы данных (и, конечно, иметь право запрашивать его). Вы придете с чем-то вроде этого:

    ВЫБЕРИТЕ alias_1.col1, alias_2.col3 ИЗ таблицы_1 как псевдоним_1, database_b.table_2 как псевдоним_2 ГДЕ ...

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

  2. Этот вопрос не имеет смысла. Пожалуйста, уточните.
  3. Как правило, представления используются для упрощения написания других запросов, которые их повторно используют. В вашем случае, как вы это описали, возможно, этот хранимый процесс лучше соответствует вашим потребностям.
  4. Нет, ожидайте определения представления.
0 голосов
/ 01 октября 2008

1) Это означает, что Postgres не поддерживает эту функцию. Я не знаю способа создания запроса, который выполняется более чем в одной базе данных.

2) Это хорошо для одной базы данных. Отдельные базы данных могут содержать миллиарды строк.

3) Не беспокойтесь о создании представлений, запросы в любом случае достаточно просты.

4) Представления не требуют места в базе данных, кроме их определения запроса.

0 голосов
/ 26 сентября 2008

1: Обходной путь - открыть соединение с другой базой данных и (при использовании psql (1)) установить это как ваше текущее соединение. Однако это будет работать, только если вы не попытаетесь объединить таблицы в обеих базах данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...