PostgreSQL の HASH を B-TREE の代わりに使用すべき状況を誰か知っていますか。私には、これらは罠のように思えます。これらは、CREATE または保守に B-TREE よりはるかに時間がかかり (少なくとも 10 倍)、また、より多くのスペースを必要とします (私のテーブル列の 1 つでは、B-TREE は 240 MB を占めますが、HASH は 4 GB を占めます)。また、Google で調べたところ、SELECT は B-TREE より速くないことがわかりました。ただし、HASH は最近最適化されたか、Google が間違っていた可能性があります。
とにかく、皆さんの意見や経験を聞きたかったんです。これらのハッシュが悪質なら、みんな知っておくべきです。
ありがとうございます
。また、MySQL の HASH についてはどうでしょうか?
ベストアンサー1
既知のキー値、特に既知の一意の値がある場合、ハッシュは B ツリーよりも高速です。
ハッシュは、問題の列が一度もない<
または>
コマンドと比較してスキャンすることを目的としています。
ハッシュはO(1)
複雑であり、B ツリーもO(log n)
複雑です ( iirc ) 。したがって、一意のエントリを持つ大きなテーブルの場合、 を取得するのITEM="foo"
が最も効率的な検索方法になります。
これは特にこれらの一意のフィールドが結合条件で使用される場合に実用的です。