2013-10-13 35 views

回答

0

搜索可能很難。但是,在Google上搜索「sql server聚簇索引數據結構」時,first link就是MS的答案。他們聲稱如下

默認情況下,聚集索引有一個分區。當聚簇索引具有多個分區時,每個分區都有一個包含該特定分區數據的B樹結構。 (答案適用於Sql 2005 & 2008)

就個人而言,我不一定相信這樣的答案,因爲MS說這是正確的(文檔不匹配實現太常見),我知道SQL服務器可以創建一個散列索引,但是假設哈希索引不會「聚集數據值」,MS似乎不太可能使用散列索引來聚集索引。現在,如果MS未來添加了位圖索引支持,那麼這可能適用於聚集索引。

+0

你知道你在說什麼嗎?你有可能使用位圖索引在磁盤上聚集數據。 – nimdil

+0

對我來說看起來不太可能,但我正在考慮在數據集羣中使用內存位圖索引。聚集索引可能在邏輯上通過使用位圖索引構建,可能不是傳統用例(低基數) - 所以是的,雖然用例最多隻限於使用,但這是可行的。有許多非Btree實現在理論上是可行的,但btree在一般情況下工作得很好,他們不太可能被使用。幾年前有一篇關於使用位圖索引和數據聚類的IEEE論文。 –

0

爲了讓您大致瞭解樹上的記錄在物理上排序在磁盤上。這意味着硬盤上的記錄維護索引確定的順序。但是,除此之外,您有常規的「非集羣」索引,而不是指向存儲值的葉子,而是指向硬盤上的記錄。

這種機制非常簡單直觀,應用廣泛。例如,PostgreSQL具有基於非聚集索引對錶進行聚簇的功能,該非聚簇索引強制磁盤上數據的物理順序。

這不是s-f,所以如果集羣索引的文檔描述和實現之間有相關的區別,我會感到非常驚訝。這也是如此核心概念,這將是一個可怕的想法。