2012-03-05 82 views
2

有沒有人有任何關於HSQLDB如何維護索引的想法?我找不到任何有關這方面細節的優秀文檔。我在hsqldb表中維護關鍵值對類型信息,其中鍵和值將由hsqldb表的多個列組成。我會在我的鍵列上放置一個索引,我想知道在app運行時是否需要單獨緩存鍵值對,或者hsqldb索引是否以類似的方式工作,並返回值鍵在O(1)時間。HSQLDB如何維護索引?

在我的表的樣本查詢將看起來像這樣:

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

將在COL3和COL4索引取上O(1)

回答

3

索引的結果,如一個使用下述與給定的選擇語句。

CREATE INDEX idx ON table1(col3, col4) 

內存哈希映射的檢索速度可能會更快,因爲它具有更少的開銷。但是您應該先測試一下,看看SELECT速度是否足以滿足您的需求。

+0

感謝您的回覆,你有什麼想法如何hsqldb保持其索引,這將有助於比較檢索順序與散列表嗎? – Ashish 2012-03-05 13:59:34

+0

理論上訪問時間是O(log2 n),但由於各種開銷,這對於內存操作來說並不是非常有用的比較。 – fredt 2012-03-05 21:50:05

+0

你是如何得出這個... O(log2 n)...我猜這是基於B-Tree的索引,我期望HSQLDB在內存中保留表和索引,因此使用散列圖類型的數據結構 – Ashish 2012-03-06 04:59:13