2009-07-15 69 views
5

在像MySQL或Oracle這樣的數據庫中,索引是如何實現的?我認爲常規索引存儲爲B樹,但找不到索引多列的複合索引。我正在查找所使用的數據結構的名稱,以便我可以研究它們。在RDB中如何實現常規索引和組合索引?

更一般地,我在哪裏可以找到有關數據庫的實現細節更多這些信息呢?我將在大學後期開設一門課程,但我現在很好奇。

回答

5

複合索引同時使用B樹,他們正好連接索引列確定的重點。作爲一個側面節點,Oracle也知道其他索引類型,即位圖索引。但這並不取決於索引列的數量。

3

B樹。每個索引都以B樹的形式存儲 - 即使是複合索引也是如此。

如果你正在尋找做索引上是如何組織更多的研究,看看B +樹和B *樹。對於SQL Server,Kalen Delaney's Inside SQL Server: The Storage Engine是一本關於SQL Server的基礎知識,包括其索引組織的優秀書籍。所以你一定要檢查一下。

一位評論者指出,Oracle可以使用位圖索引,這些索引的結構與B-tree非常不同,但這些索引很少用於傳統關係數據庫 - 它們更常用於OLAP類型的應用程序,您需要快速訪問非選擇性數據組。

編輯:SQL Server爲例,現在使用Columnstore Indexes。如果您對大型BI類型工作負載進行任何工作,則絕對值得關注,因爲它們以與B-Tree完全不同的方式存儲數據。

SQL Server還使用不同的機制現在memory optimized tables爲好,並且是東西是非常有用的OLTP類型的查詢。

+0

除了那些不是 - 就像Oracle中的位圖索引一樣。 – 2009-07-15 12:23:56