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

PostgreSQL作成インデックス

    PostgreSQLインデックスは、ルックアップ、フィルター、および結合を高速化することにより、SQLクエリを高速化します。 PostgreSQL CREATE INDEXステートメントを使用して、PostgreSQLでインデックスを作成し、データベースクエリを高速化する方法は次のとおりです。

    PostgreSQLでインデックスを作成する方法

    PostgreSQLCREATEINDEXステートメントを使用してPostgreSQLでインデックスを作成する手順は次のとおりです。次の表があるとします

    CREATE TABLE orders(
       order_id INT PRIMARY KEY,
       product_id INT NOT NULL,
       sale INT NOT NULL,
       product_name VARCHAR(10)
    );

    テーブルの列にインデックスを追加する方法

    列または列のセットにインデックスを追加してから、CREATEINDEXステートメントを使用するとします。 CREATEINDEXステートメントの構文は次のとおりです

    CREATE [UNIQUE] INDEX [CONCURRENTLY] index_name ON table_name 
    [USING METHOD](column_list)

    上記のクエリでは、CREATE INDEXの後にインデックス名、インデックスを作成する必要のあるテーブル、およびインデックスに含める列のリストを指定します。

    オプションでUNIQUEキーワードを指定して、インデックスに一意の値のみが含まれるようにすることができます

    PostgreSQLは、btreeなどのさまざまなインデックス作成方法をサポートしています。 、hashgistspgistgin 、およびbrin インデックスの作成時に指定できます。

    デフォルトでは、PostgreSQLはbtreeインデックスを使用します。

    product_nameに新しいインデックスを追加する例を次に示します。 上記の注文 テーブル

    CREATE INDEX prod_id_index ON orders (product_id);

    複数の列を使用してインデックスを作成する方法は次のとおりです

    CREATE INDEX prod_id_index ON orders (product_id, order_id);

    ハッシュメソッドを使用してインデックスを作成する方法は次のとおりです

    CREATE INDEX prod_id_index ON orders using hash(product_id, order_id);

    値の重複を避けるために一意のインデックスを作成する方法は次のとおりです

    CREATE UNIQUE INDEX prod_id_index ON orders (product_id);

    PostgreSQLでは、WHERE句を使用して部分インデックスを作成することもできます。この場合、一致する値のみがインデックスに登録されます

    CREATE INDEX prod_id_index ON orders (product_id) where status=1;

    上記のクエリでは、 prod_idのみ status =1

    の場合にインデックスが付けられます

    上記の記事がPostgreSQLでインデックスを作成するのに役立つことを願っています

    Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。

    1. MySQL5.7からMySQL8.0への移行-知っておくべきこと

    2. MySQLで年齢を計算する(InnoDb)

    3. datagrip変更を適用できませんこのテーブルは読み取り専用です。セルエディタの変更は適用できません

    4. SQLピボット–行を列に変換する方法を知っている