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

postgresqlのビットマップインデックスを理解する

    ページのビットマップは、クエリごとに動的に作成されます。キャッシュまたは再利用されず、ビットマップインデックススキャンの最後に破棄されます。

    その内容はクエリ述語に依存するため、事前にページビットマップを作成することは意味がありません。 。

    x=1 and y=2を検索しているとします。 。 xにbツリーインデックスがあります およびy 。 PostgreSQLはxを結合しません およびy ビットマップに入れてから、ビットマップを検索します。インデックスxをスキャンします x=1のすべてのページのページアドレス x=1を含む可能性のあるページにビットマップを作成します 本当です。次に、yをスキャンします yのページアドレスを探しています 2に等しい可能性があります 、そこからビットマップを作成します。次に、それらをANDして、両方がx=1であるページを検索します。 およびy=2 本当かもしれません。最後に、テーブル自体をスキャンし、候補値を含む可能性のあるページのみを読み取り、各ページを読み取り、x=1 and y=2の行のみを保持します。 。

    キャッシュされたビルド済みのビットマップインデックスのようなものを探している場合、PostgreSQL9.5には次のようなものがあります。BRINインデックス 。これらは非常に大きなテーブルを対象としており、目的の値が含まれていないことがわかっているためにスキップできるテーブルの範囲を見つける方法を提供します。



    1. DB接続で使用可能な行に基づいてDAGを動的に作成する

    2. .htaccessを使用したURL書き換えにより、重複するmysqlエントリが作成されます

    3. PL/SQLでform-dataとパラメータを使用してPOSTリクエストを送信する方法

    4. v $ビューへのアクセスを許可する方法(v $ session、v $ instance)