婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQLSERVER的非聚集索引結構深度理解

SQLSERVER的非聚集索引結構深度理解

熱門標簽:慶陽地圖標注 美團地圖標注商戶認證注冊 怎么給高德做地圖標注 承德地圖標注公司名需要花錢嗎 浙江穩定外呼系統供應商 北京400電話辦理多少錢 電銷外呼系統軟件功能 榕城市地圖標注 咸陽電腦外呼系統運營商

我們知道SQLSERVER的數據行的存儲有兩種數據結構:A: 堆   B :B樹(binary 二叉樹)

數據按照這種兩種的其中一種來排序和存儲,學過數據結構的朋友應該知道二叉樹,為什麼用二叉樹,因為方便用二分查找法來快速

找到數據。如果是堆,那么數據是不按照任何順序排序的,也沒有任何結構,數據頁面也不是首尾相連的,不像B樹,數據頁面

使用雙向鏈表首尾相連。堆表只依靠表里的IAM頁(索引分配映射頁)將堆的頁面聯系在一起,IAM里記錄了頁面編號,頁面位置

除非表里有聚集索引,如果沒有的話那么表里的數據的存儲就是堆結構

那么非聚集索引呢?非聚集索引也是堆結構?其實SQLSERVER有幾種頁面類型(數據都使用一頁一頁來存儲,就像Windows的內存也是使用頁面來組織的)

其中有一種是索引頁 ,一種是數據頁

我感覺很多書都說不清,就像我一樣,在文章的開頭也是這樣說的:數據行的存儲有兩種數據結構:A: 堆   B :B樹(二叉樹)

我覺得應該是數據頁面的存儲有兩種數據結構:1、堆  2、B樹

先說一下:索引頁,不管是聚集索引還是非聚集索引,這些索引數據都存放在索引頁,而索引頁都是按照B樹的結構里存儲的

而堆頁:也就是實際的數據行,如果表里沒有聚集索引,那么實際的數據就放在堆頁,如果聚集索引,那么數據就放在索引頁

而B樹里的節點 ,其實又叫頁面,又叫節點  在B樹里會有一頁:root page(亦即是根節點),非聚集索引和聚集索引都是一樣的

所以:數據行的存儲有兩種數據結構:A: 堆   B :B樹(二叉樹)

上面這句話應該明白了吧?

在說一下,在堆里的數據頁面完全是隨機存放的,而數據頁面之間唯一的邏輯連接是記錄在IAM頁里的,所以IAM頁也就扮演了root page的角色


那么聚集索引呢?聚集索引也是堆結構?

非聚集索引放在索引頁,B樹結構,數據依舊放在堆頁,那么如果數據頁放在堆里,不像聚集索引放在B樹的葉子節點里

(亦即是放在索引頁里),那么非聚集索引和實際的數據如何發生聯系呢?

答案是:在非聚集索引的葉子節點(葉子頁面)會有行定位器,而行定位器的作用請看下面紅色字

非聚集索引與聚集索引具有相同的B樹結構,他們之間的顯著差別在于以下兩點:

(1)基礎表的數據行不按非聚集鍵的順序排序和存儲

(2)非聚集索引的葉層是由索引頁而不是由數據頁組成

(3)建立非聚集索引的表可以是一個B樹,也可以是一個堆

(4)如果表是堆(意味著該表沒有聚集索引),行定位器指向行的指針。該指針是由文件標識符ID:頁碼:頁上的行數生成。整個

指針稱為行ID(RID)

(5)如果表有聚集索引或索引視圖上有聚集索引,則行定位器會指向聚集索引鍵。SQL通過使用存儲在非聚集索引的葉子內的

指針(指向聚集索引鍵)搜索聚集索引來檢索實際數據

非聚集索引不會改變或改善實際數據頁的存儲模式。他的B樹結構只針對自己的索引頁面。

不過,非聚集索引跟聚集索引的作用還是一樣的,相當于檢字表

最后總結一下吧,這麼短的隨筆總結啥子呢?

當然是總結表的結構,因為曾經有人在論壇里問過一張表的結構

A 有聚集索引的表或者有聚集索引也有非聚集索引   (B樹)

B 沒有任何索引(堆)

C 沒有聚集索引,有非聚集索引(B樹+堆)

論壇里有人簡稱A為聚集表  ,B和C為堆表

記得以前在大學里數據結構老師講過的一些數據結構:大根堆  ,小根堆 ,雙向鏈表,二叉樹

可惜現在全部還給老師了

 附上圖片

堆表的結構

非聚集索引的結構

 聚集索引的結構

您可能感興趣的文章:
  • sqlserver 2008手工修改表結構,表不能保存的問題與解決方法
  • 還原sqlserver2008 媒體的簇的結構不正確的解決方法
  • 使用SQLSERVER 2005/2008 遞歸CTE查詢樹型結構的方法
  • 如何獲取SqlServer2005表結構(字段,主鍵,外鍵,遞增,描述)
  • 調整SQLServer2000運行中數據庫結構

標簽:呼和浩特 江蘇 新鄉 上海 貴州 昭通 重慶 拉薩

巨人網絡通訊聲明:本文標題《SQLSERVER的非聚集索引結構深度理解》,本文關鍵詞  SQLSERVER,的,非,聚集,索引,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQLSERVER的非聚集索引結構深度理解》相關的同類信息!
  • 本頁收集關于SQLSERVER的非聚集索引結構深度理解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 临朐县| 荥经县| 内黄县| 平凉市| 黄浦区| 枝江市| 南昌市| 星座| 安阳市| 海南省| 武宁县| 罗田县| 洪雅县| 桂阳县| 禄丰县| 葫芦岛市| 尚义县| 保定市| 合江县| 宁津县| 乌兰察布市| 西宁市| 嵊州市| 天峨县| 大城县| 乌拉特中旗| 广昌县| 安宁市| 兰坪| 饶河县| 浦城县| 河北省| 通海县| 南召县| 阿巴嘎旗| 岑巩县| 平原县| 绵阳市| 玛曲县| 大洼县| 如东县|