sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQL複合主キー

    (x, y, z)で複合主キーを作成する場合 、PostgreSQLは1つのUNIQUEの助けを借りてこれを実装します (x, y, z)の複数列のbtreeインデックス 。さらに、3つの列はすべてNOT NULLです。 (暗黙的に)、これがPRIMARY KEYの主な違いです およびUNIQUE INDEX

    データに対する明らかな制限に加えて、複数列のインデックスは、xの3つの個別のインデックスとは、クエリのパフォーマンスに多少異なる影響を及ぼします。 、y およびz

    dba.SEに関する関連ディスカッション:

    • PostgreSQLでのインデックスの動作

    インデックスのみのスキャンの新機能に関する例、ベンチマーク、ディスカッション、および見通し Postgres9.2で。

    特に、(x, y, z)の主キー xの条件でクエリを高速化します 、(x,y) または(x, y, z) 最適に。 yでのクエリにも役立ちます 、z(y,z) または(x,z) しかし、それほどではありません。

    後者の組み合わせでクエリを高速化する必要がある場合は、PK制約の列の順序を変更したり、1つ以上の追加のインデックスを作成したりすることができます。参照:

    • 複合インデックスは、最初のフィールドのクエリにも適していますか?


    1. PL / SQLプロシージャをオンラインで生成して、Oracleテーブルにデータをインポートします

    2. コマンドラインからmysqlデータベースをプレーンテキスト(CSV)バックアップにダンプします

    3. SQL Serverで外部キーを作成するにはどうすればよいですか?

    4. Oracle SQLエスケープ文字(「&」の場合)