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

postgresqlの要点インデックスタイプでuuidを使用する方法は?

    Postgres10以降

    btree_gist データ型uuidもカバーするようになりました 、ポールがコメントしました 。 (そして他のいくつかのデータ型、著しくすべてのenum タイプ。)

    これで、データベースごとに1回拡張機能をインストールするだけです。

    CREATE EXTENSION btree_gist;
    

    そうすれば、インデックスは正常に機能するはずです。

    関連:

    Postgres9.6以前

    (元の回答。)
    通常、追加のモジュール btree_gist 、ただし、タイプ uuid ではありません それで覆われています。

    理論的には、UUIDはa 128-bit quantityであるため (ドキュメントごと )、最も効率的な方法は、2つのbigintに変換することです。 またはfloat8 インデックスの目的で。ただし、これらのキャストはいずれも標準のPostgresでは定義されていません。

    この機能インデックスを利用するには、クエリがその式と一致する必要があります。省略形の"value"::textを使用できます クエリ内(ただし、括弧を追加せずにインデックス定義内にはありません)。

    余談ですが、valueは使用しないでください 列名としては、標準SQLで予約されている単語> 。

    問題は次のとおりです。理由 GiSTインデックスが必要ですか。最善の解決策は目的によって異なります。



    1. 右側のテーブルへの内部結合後に左側のテーブルから個別の行を選択するSQLクエリ

    2. MySQL:列から最後の5桁の最大値を返します

    3. MySQLのキーとしてハッシュされたSSNの代替

    4. PostgreSQL自動インクリメント