通常のbツリーインデックス(またはハッシュインデックスですが、実際には使用しないでください)以外のインデックスメソッドを使用する場合は、GiSTを使用する必要があります。 PostGISインデックスにはGiSTが必要です。
Bツリーインデックスは、 =
のように、同等性または順序付けを含む基本的な操作にのみ使用できます。 、<
、
<=
、>コード> 、
> =
、 <>
、 BETWEEN
およびIN
。ジオメトリオブジェクト(ポイント、リージョンなど)にbツリーインデックスを作成できますが、実際には、>
のような順序の比較として同等に使用することしかできません。 そのようなオブジェクトには一般的に無意味です。 「含む」、「交差する」などのより複雑で一般的な比較をサポートするには、GiSTインデックスが必要です。
btree_gist
を使用できます 拡張機能
GiSTのbツリーインデックスを有効にします。通常のbツリーインデックスよりもかなり低速ですが、GiSTのみのタイプと text
のような通常のタイプの両方を含む複数列のインデックスを作成できます。 、 integer
、など。
このような状況では、本当に Explainanalyze
を使用する必要があります ( Explain.depesz.com
これには、Pgがさまざまなインデックスと作成したインデックスの組み合わせをどのように使用するかを調べるのに役立ちます。複数列のインデックスでさまざまな列の順序を試して、2つ以上の個別のインデックスがより効果的かどうかを確認してください。
この場合、複数列のGiSTインデックスで最良の結果が得られると強く思いますが、インデックスとインデックス列の順序のいくつかの異なる組み合わせを試してみます。