0

私はpgsqlの初心者です。私はそれについていくつか質問があります:

1) で列にアクセスできることはわかっていますが<schema>.<table_name>、そのような列にアクセスしようとすると、次のような<db_name>.<schema>.<table_name>エラーがスローされます

Cross-database references are not implemented

どうすれば実装できますか?

2) 10 以上のテーブルがあり、そのうちの 6 つには 2000 以上の行があります。それらすべてを 1 つのデータベースに保持しても問題ありませんか? または、それらを維持するためにデータベースを作成する必要がありますか?

3) 2000 行を超える上記の質問テーブルから、特定のプロセスのために数行のデータが必要です。これらの行を取得するビューを作成しました。たとえば、テーブルには従業員の詳細が含まれており、従業員は 3 つのタイプに分類されます。マネージャー、アーキテクト、エンジニア。このテーブルがすべてのプロセスを取得していないことは非常に明白です...プロセスはそこからデータを読み取るために使用します...データを取得するには2つの方法があると思いますSELECT * FROM emp WHERE type='manager'。または、マネージャー、アーキテクト、エンジニアのビューを作成してデータを取得できますSELECT * FROM view_manager

これを行うためのより良い方法を提案できますか?

4) テーブルと同様に、ビューにもストレージ スペースが必要ですか?

事前にサンクス。

4

3 に答える 3

1
  1. Cross Database は何年も前から PostGreSQL に存在します。データベース名の前にデータベース名を付ける必要があります (もちろん、クエリを実行する権限も必要です)。次のようなものが付属しています。

    SELECT alias_1.col1, alias_2.col3 FROM table_1 as alias_1, database_b.table_2 as alias_2 WHERE ...

    データベースが別のインスタンスにある場合は、dblink contrib を使用する必要があります。

  2. この質問は意味がありません。洗練してください。
  3. 一般に、ビューは、それらを再利用する他のクエリの記述を簡素化するために使用されます。あなたの場合、あなたが説明しているように、おそらくそのストアドプロシージャがあなたのニーズにより適しているでしょう。
  4. いいえ、ビューの定義を期待してください。
于 2008-10-01T05:25:39.297 に答える
0

1) つまり、Postgres がサポートする機能ではないということです。複数のデータベースで実行されるクエリを作成する方法がわかりません。

2) 1 つのデータベースでは問題ありません。単一のデータベースには、数十億の行が含まれる場合があります。

3) ビューを作成する必要はありません。とにかく、クエリは十分に単純です。

4) ビューは、クエリ定義を除いて、データベースにスペースを必要としません。

于 2008-10-01T05:19:48.750 に答える
0

1: 回避策は、他のデータベースへの接続を開き、(psql(1) を使用している場合) それを現在の接続として設定することです。ただし、これは、両方のデータベースのテーブルを結合しようとしない場合にのみ機能します。

于 2008-09-26T06:20:29.607 に答える