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

文字列列のpostgresqlインデックス

    単純な同等性チェックの場合(= )、varcharのBツリーインデックス またはtext 列はシンプルで最良の選択です。それは確かにパフォーマンスに役立ちます

    もちろん、単純なintegerのBツリーインデックス パフォーマンスが向上します。手始めに、単純なintegerを比較する 値は少し速くなります。しかし、さらに重要なことは、パフォーマンスはインデックスのサイズの関数でもあるということです。列が大きいほど、データページあたりの行数が少なくなり、より多くのページを読み取る必要があることを意味します...

    HomeAddress以降 とにかくユニークなものはほとんどなく、自然な主キーとしては適切ではありません。 代理主キーを使用することを強くお勧めします 代わりは。 serial そのための明白な選択です。その唯一の目的は、操作するためのシンプルで高速な主キーを持つことです。

    上記のテーブルを参照する他のテーブルがある場合、これはさらに効率的になります。外部キー列に長い文字列を複製する代わりに、整数列に必要なのは4バイトだけです。また、アドレスは変更される可能性があるため、更新をカスケードする必要はあまりありませんが、代理pkは同じままです(もちろん、そうする必要はありません)。

    テーブルは次のようになります:

    CREATE TABLE resident (
       resident_id serial PRIMARY KEY
      ,address text NOT NULL
       -- more columns
    );
    
    CREATE INDEX resident_adr_idx ON resident(address);
    

    これにより、2つのBツリーインデックスが作成されます。 resident_idの一意のインデックス addressのプレーンインデックス 。

    マニュアルのインデックスの詳細
    Postgresには多くのオプションがありますが、この単純なケースではこれ以上必要ありません。



    1. エラー:配列にnullを含めることはできませんPostgreSQL

    2. SQLAlchemy、Psycopg2、Postgresql COPY

    3. PHPを使用して改行付きのテキスト文字列をMySQLデータベースのテキストフィールドに保存するにはどうすればよいですか?

    4. PostgreSQLを垂直方向にスケーリング