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

PostgresGISTとBtreeインデックス

    通常のbツリーインデックス(またはハッシュインデックスですが、実際には使用しないでください)以外のインデックスメソッドを使用する場合は、GiSTを使用する必要があります。 PostGISインデックスにはGiSTが必要です。

    Bツリーインデックスは、 =のように、同等性または順序付けを含む基本的な操作にのみ使用できます。 、< <=>> = <> BETWEEN およびIN 。ジオメトリオブジェクト(ポイント、リージョンなど)にbツリーインデックスを作成できますが、実際には、>のような順序の比較として同等に使用することしかできません。 そのようなオブジェクトには一般的に無意味です。 「含む」、「交差する」などのより複雑で一般的な比較をサポートするには、GiSTインデックスが必要です。

    btree_gistを使用できます 拡張機能 GiSTのbツリーインデックスを有効にします。通常のbツリーインデックスよりもかなり低速ですが、GiSTのみのタイプと textのような通常のタイプの両方を含む複数列のインデックスを作成できます。 、 integer 、など。

    このような状況では、本当に Explainanalyzeを使用する必要があります ( Explain.depesz.com これには、Pgがさまざまなインデックスと作成したインデックスの組み合わせをどのように使用するかを調べるのに役立ちます。複数列のインデックスでさまざまな列の順序を試して、2つ以上の個別のインデックスがより効果的かどうかを確認してください。

    この場合、複数列のGiSTインデックスで最良の結果が得られると強く思いますが、インデックスとインデックス列の順序のいくつかの異なる組み合わせを試してみます。




    1. INSERT IGNOREは、レコードが追加されていなくても自動インクリメントカウンターを増やしますか?

    2. PHPMySQLの日付比較

    3. JPA複合主キー

    4. WindowsでのMySQLのオートコンプリート