2012-03-05 10 views
2

誰でも、HSQLDBがどのようにインデックスを管理しているのですか?私はこれに関する詳細を持った良い文書を見つけることができませんでした。私はキーと値がhsqldbテーブルの複数の列で構成されているhsqldbテーブルにキー値のペア型情報を保持しています。キー列にインデックスを配置すると、アプリの実行中にキーと値のペアをマップに別々にキャッシュする必要があるかどうかを知りたい場合や、hsqldbインデックスが同様の方法で動作し、 O(1)時間内のキー。私のテーブルの上にHSQLDBは​​どのようにインデックスを管理していますか?

サンプルクエリは次のようになります。

select col1, col2 from table1 where col3=val3 and col4=val4; 

COL3のインデックスとCOL4はOで結果をフェッチします(1)

答えて

3

下記のようなインデックスが使用されています指定されたselectステートメントを使用します。

CREATE INDEX idx ON table1(col3, col4) 

メモリ内ハッシュマップは、オーバーヘッドが少ないため、検索が高速になる可能性があります。しかし、最初にテストして、SELECT速度があなたのニーズに適しているかどうかを確認する必要があります。

+0

返信いただきありがとうございます。hsqldbがそのインデックスをどのように維持しているかを知っていますか?検索の順序をハッシュマップと比較するのに役立ちますか? – Ashish

+0

理論的にはアクセス時間はO(log2 n)ですが、これはさまざまなオーバーヘッドのためにメモリ操作の非常に便利な比較ではありません。 – fredt

+0

どのようにこれに着いた... O(log2 n)...これはBツリーベースのインデックスのためだと思います、私はHSQLDBがテーブルとインデックスをメモリに保持し、したがってハッシュマップ型のデータ構造を使用すると期待します – Ashish

関連する問題