タグ付けされた質問 「postgresql」

PostgreSQLのすべてのバージョン。そのコンテキストが重要な場合は、postgresql-11などのバージョン固有のタグを追加します。

7
EXISTS(SELECT 1…)vs EXISTS(SELECT *…)どちらですか?
テーブル内の行の存在を確認する必要があるときはいつでも、次のような条件を常に書く傾向があります。 SELECT a, b, c FROM a_table WHERE EXISTS (SELECT * -- This is what I normally write FROM another_table WHERE another_table.b = a_table.b ) 他の人は次のように書きます: SELECT a, b, c FROM a_table WHERE EXISTS (SELECT 1 --- This nice '1' is what I have seen other people use FROM another_table …

5
(ファイル)データをPostgreSQL bytea列に挿入する方法は?
この質問はbytea v。oid v。blob v。大きなオブジェクトなどに関するものではありません。 主キーintegerフィールドとフィールドを含むテーブルがありbyteaます。byteaフィールドにデータを入力したいのですが。これはおそらく、いずれかのPL/言語で行うことができPL/Python、将来的にはこれを行うことを検討するかもしれません。 私はまだテストと実験を行っているので、「標準」のSQLステートメントを使用して(サーバー上の)ファイルからデータを挿入するだけです。サーバーに対する書き込み権限を持つ管理者のみが、希望する方法でデータを挿入できることを認識しています。ユーザーはbytea現在データを挿入しないので、この段階では心配していません。さまざまなStackExchangeサイト、PostgreSQLアーカイブ、およびインターネットを一般的に検索しましたが、答えが見つかりませんでした。 編集: 2008年からのこの議論は、私がやりたいことは不可能であることを意味します。byteaフィールドはどのように使用されますか? 編集: 2005年のこの類似の質問は未回答のままです。 解決済み: Webサイトのここで提供される詳細はpsycopg、Pythonで作成したソリューションの基礎を提供しました。byteaを使用して、バイナリデータを列に挿入することもできますPL/Python。「純粋な」SQLを使用してこれが可能かどうかはわかりません。

6
PostgreSQLでVALUESを使用して一時テーブルを作成する方法
私はPostgreSQLを学びWITH、デバッグ目的で通常のテーブルの代わりに使用できる一時テーブルまたは宣言を作成する方法を見つけようとしています。 CREATE TABLEのドキュメントを見VALUESて、クエリとして使用できると書かれていますが、例を示していません。VALUESリンクされている条項のドキュメントにも例はありませんか? そこで、次のような簡単なテストを作成しました。 DROP TABLE IF EXISTS lookup; CREATE TEMP TABLE lookup ( key integer, val numeric ) AS VALUES (0,-99999), (1,100); しかし、PostgreSQL(9.3)は、 「AS」またはその近くの構文エラー 私の質問は: 上記のステートメントを修正するにはどうすればよいですか? どのようにそれを使用するように適応させることができWITH blockますか? 前もって感謝します。

1
同じクエリで異なる条件を持つPostgresカウント
Postgres 9.3の編集 次のスキーマを持つレポートを作成しています:http : //sqlfiddle.com/#!15 / fd104/2 現在のクエリは次のように正常に機能しています。 基本的には、3テーブルの内部結合です。私はこのクエリを作成しませんでしたが、それを残した開発者がクエリを変更したいと思います。ご覧のとおり、にTotalApplication基づいてアプリケーション全体をカウントしますa.agent_id。そしてtotalapplication、結果の列を見ることができます。私が望むのは、それを削除しtotalapplicationて、新しい2列に変更することです。私はA追加したいcompletedsurveyとpartitalsurvey列を。基本的にこの部分は SELECT a.agent_id as agent_id, COUNT(a.id) as CompletedSurvey FROM forms a WHERE a.created_at >= '2015-08-01' AND a.created_at <= '2015-08-31' AND disposition = 'Completed Survey' GROUP BY a.agent_id 私はちょうど追加しましたが、唯一の違いがある同じクエリを持つAND disposition = 'Completed Survey'別の列が必要ですpartialsurveycompletedsurvey AND disposition = 'Partial Survey' そして COUNT(a.id) as PartialSurvey しかし、私はそのクエリをどこに置くか、クエリがどのように見えるかを知らないので、最終的な出力にはこれらの列があります …

2
PostgreSQLでの一括更新パフォーマンスの最適化
Ubuntu 12.04でPG 9.1を使用します。 現在、データベースで次の形式の多数のUPDATEステートメントを実行するのに最大24時間かかります。 UPDATE table SET field1 = constant1, field2 = constant2, ... WHERE id = constid (IDで識別されるオブジェクトのフィールドを上書きしているだけです。)値は外部データソースから取得されます(テーブル内のDBにはまだありません)。 テーブルにはそれぞれ少数のインデックスがあり、外部キー制約はありません。最後までCOMMITは行われません。 pg_dumpデータベース全体をインポートするには2時間かかります。これは、合理的に対象とすべきベースラインのようです。 PostgreSQLのデータセットを何らかの方法で再インポートするカスタムプログラムを作成する以外に、バルクUPDATEパフォーマンスをインポートのパフォーマンスに近づけるためにできることはありますか?(これは、ログ構造化されたマージツリーがうまく処理できると信じている領域ですが、PostgreSQL内でできることはないかと考えています。) いくつかのアイデア: すべての非IDインデックスを削除し、その後再構築しますか? checkpoint_segmentsを増やしますが、これは実際に長期的なスループットの持続に役立ちますか? ここで述べたテクニックを使用しますか?(新しいデータをテーブルとしてロードし、新しいデータにIDが見つからない古いデータを「マージ」する) 基本的に試してみることがたくさんありますが、最も効果的なものが何か、他のことを見落としているかどうかはわかりません。今後数日間は実験に費やしますが、ここでも同様に質問すると思いました。 テーブルには同時ロードがありますが、読み取り専用です。

4
ライブデータベースでpg_dumpを実行すると、一貫したバックアップが作成されますか?
常に変更されている3GBのデータベースがあり、サーバーを停止せずにバックアップを作成する必要があります(Postgres 8.3)。 pg_dumpは5分間実行されます。プロセス中にデータが変更された場合はどうなりますか?一貫したバックアップを取得できますか?災害がいつ発生するかを知りたくありません。 Postgresのドキュメントhttp://www.postgresql.org/docs/8.3/static/app-pgdump.htmlはこれについて何も述べていません。
37 postgresql 

2
PostgreSQL EXCLUDE USINGエラー:データ型整数にはデフォルトの演算子クラスがありません
PostgreSQL 9.2.3では、この単純化されたテーブルを作成しようとしています。 CREATE TABLE test ( user_id INTEGER, startend TSTZRANGE, EXCLUDE USING gist (user_id WITH =, startend WITH &&) ); しかし、私はこのエラーを受け取ります: ERROR: data type integer has no default operator class for access method "gist" HINT: You must specify an operator class for the index or define a default operator class …

2
CREATE OR REPLACEを使用してPostgreSQLビューの列の名前を変更することはできません
PostreSQL 8.3では、既存のテーブルのように見えるが、異なる列名を持つビューを作成しようとしています。 これは動作します CREATE OR REPLACE VIEW gfam.nice_builds AS SELECT (family_tree.family_tree_id) as x, family_tree.family_tree_name, family_tree.family_tree_description FROM gfam.family_tree; 上記はfamily_treeテーブルの複製を作成しますが、次の試みは失敗します: CREATE OR REPLACE VIEW gfam.nice_builds AS SELECT (family_tree.family_tree_id) as x, family_tree.family_tree_name, family_tree.family_tree_description FROM gfam.family_tree; エラー:ビュー列「family_tree_id」の名前を変更できません 列の名前を変更するにはどうすればよいですか?
37 postgresql 


2
「ビットマップヒープスキャン」と「ビットマップインデックススキャン」を理解する
私の誤解を次の例で説明します。 の基本を理解していませんでしたBitmap Heap Scan Node。SELECT customerid, username FROM customers WHERE customerid < 1000 AND username <'user100';計画がこれであるクエリを検討してください。 Bitmap Heap Scan on customers (cost=25.76..61.62 rows=10 width=13) (actual time=0.077..0.077 rows=2 loops=1) Recheck Cond: (((username)::text < 'user100'::text) AND (customerid < 1000)) -> BitmapAnd (cost=25.76..25.76 rows=10 width=0) (actual time=0.073..0.073 rows=0 loops=1) -> Bitmap Index Scan …
36 postgresql  index 

2
WHERE句は、記述された順に適用されますか?
大きなテーブル(3700万行)を調べるクエリを最適化しようとしていますが、クエリで操作が実行される順序について質問があります。 select 1 from workdays day where day.date_day >= '2014-10-01' and day.date_day <= '2015-09-30' and day.offer_id in ( select offer.offer_day from offer inner join province on offer.id_province = province.id_province inner join center cr on cr.id_cr = province.id_cr where upper(offer.code_status) <> 'A' and province.id_region in ('10' ,'15' ,'21' ,'26' ,'31' , …

5
Postgresqlで1つのテーブルから別のテーブルに何百万行を効率的にコピーするにはどうすればよいですか?
2つのデータベーステーブルがあります。1つには何億ものレコードが含まれています。それを呼び出しましょうhistory。もう1つは毎日計算されるので、すべてのレコードをhistory1つにコピーします。 私がしたことは実行することでした: INSERT INTO history SELECT * FROM daily そして、しばらくの間はうまくいきましたが、レコードの数が増え続けるにつれて徐々に遅くなり始めました。今私はからコピーする必要が約2万レコード持っているdailyとhistory、単一の操作では、それが完全に時間がかかりすぎます。 あるテーブルから別のテーブルにデータをコピーする別のより効率的な方法はありますか?
36 postgresql 

6
「ストアドプロシージャ」と「ストアドファンクション」の違いは何ですか?
したがって、この質問からのコメントは、PostgreSQLの「Stored Procedrues」と「Stored Funtions」にわずかな違いがあると述べています。 コメントはウィキペディアの記事にリンクしていますが、これの一部は当てはまらないようです(たとえば、SELECT声明で使用できるなど)。 構文自体は少し混乱しているようです。 CREATE FUNCTION emp_stamp() RETURNS trigger AS $emp_stamp$ BEGIN [...] END; $emp_stamp$ LANGUAGE plpgsql; CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp FOR EACH ROW EXECUTE PROCEDURE emp_stamp(); を作成しますが、FUNCTIONとして参照しPROCEDUREます。 では、これら2つの違いは何ですか?

4
PostgreSQLでのインデックス構築の進行状況の監視
PostgreSQLのインデックス作成の進行状況を監視する方法はありますか。私は大きなテーブルにインデックスを作成していますが、これがどのくらいの速さで起こっているのかを見たいです。 これを監視する方法はありますか?
36 postgresql  index 

3
MD5フィールドに最適なデータ型は何ですか?
読み取りが多いことがわかっているシステムを設計しています(1分あたり数万回の読み取り)。 names一種の中央レジストリとして機能するテーブルがあります。各行には、textフィールドrepresentationとkeyそのMD5ハッシュである一意のフィールドがありますrepresentation。1現在、このテーブルには数千万のレコードがあり、アプリケーションの存続期間中に数十億に達すると予想されています。 テーブルを参照する他の(スキーマとレコード数が非常に異なる)テーブルは多数ありnamesます。これらのテーブルのいずれかのレコードにname_keyは、機能的にはnamesテーブルへの外部キーであるが含まれることが保証されています。 1:ちなみに、ご想像のとおり、このテーブルのレコードは一度書き込まれると不変です。 テーブル以外の特定のnamesテーブルでは、最も一般的なクエリは次のパターンに従います。 SELECT list, of, fields FROM table WHERE name_key IN (md5a, md5b, md5c...); 読み取りパフォーマンスを最適化したいと思います。私が最初にやるべきことは、インデックスのサイズを最小化することだと思います(ただし、間違っていると証明されてもかまいません)。 質問: /に最適なデータ型は何ですかれるkeyとname_key、列?以上 を使用する理由はありますか?または?hex(32)bit(128)BTREEGIN

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.