2012-07-17 78 views
2

因此,我們即將把H2代碼移植到一個noSQL存儲中,而不是放在文件系統上,以供我們在大型系統中使用(儘管有數以萬億計的較小索引)。從H2數據庫移植索引邏輯和連接邏輯,但索引的任何好的信息?

當查看lucene和H2時,乍看之下,如果您索引4列(比如A,B,C,D)而不是4棵b樹,它們幾乎看起來像是使用一棵b樹。我有點困惑,因爲這意味着,我需要在A上查詢,否則這會崩潰,對嗎?或者我弄錯了,實際上有4棵b樹,而當我加入時,這意味着可能有8棵我需要處理的b樹或什麼東西。

有沒有關於如何詳細工作的好文章?或有人可以推薦一些關於這個主題的好書嗎?

(我在學校的電氣工程師。所以不要有這樣的數據庫編程類:(有點遺憾,但不應該太難追上)。

感謝, 院長

回答

3

所有SQL的DBMS我知道的有每整個複合指標。我猜測,有「綜合指數」的概念,任何其他系統相同的行爲。

中只有一個B樹在上{A複合指數的情況下, ,B,C,D},這一個B-Tree將允許你搜索有效用於...

  • A = ...
  • A = ... AND B = ...
  • A = ... AND B = ... AND C =。 ..
  • A = ... AND B = ... AND C = ... AND d = ...

...和類似範圍的搜索。

這將是對於有些高效:

  • A = ... AND C = ...
  • A = ... AND d = ...
  • A =。 ..和C = ... AND d = ...
  • A = ... AND B = ... AND d = ...

而將低效爲:

  • B = ...
  • B = ... AND C = ...
  • B = ... AND d = ...
  • B = ...和c = ... AND d = ...
  • C = ...
  • d = ...
  • 等..

換句話說上的索引的前緣搜索是有效的(雖然一些的DBMS,如Oracle,可以使用「跳躍掃描」用於非前沿搜索)。


在另一方面,具有對{A},{B},{C}和{d}分開的(非複合)索引,將導致4 B-樹木和一組不同的性能特點。

要詳細瞭解數據庫索引的工作方式,請查看Anatomy of an SQL Index

+0

這是一個很好的描述。 – 2012-07-18 07:42:23