日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SQL Server 索引的底層實現(xiàn)概述

文章主要描述的是SQL Server 索引的底層實現(xiàn),本文的關(guān)鍵字為聚集索引 非聚集索引 clustered index,你的表(Tables)中數(shù)據(jù)實際上都存儲在頁(pages)之中的除了BLOB類型的數(shù)據(jù)。如果某列的字段的類型為BLOB那么將有一個16字節(jié)的指針指向BLOB page。

站在用戶的角度思考問題,與客戶深入溝通,找到尼金平網(wǎng)站設(shè)計與尼金平網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名與空間、虛擬主機、企業(yè)郵箱。業(yè)務(wù)覆蓋尼金平地區(qū)。

頁是MS SQL Server中數(shù)據(jù)存儲的最小單位。每頁包含以行(row)為單位保存數(shù)據(jù)。一行只能存儲在一個頁中。每頁可以容納8KB的信息。因為這個原因,每行的最大值為8KB。一組相鄰的8個頁被稱為一個盤區(qū)(Extent)

堆文件和分配映射SQL Server 索引(Heap and the Index Allocation Map(IAM))

堆文件在sysindexs表中只有一行記錄,并且其indid = 0. sysindexs.FIRSTIAM字段指向了IAM頁鏈表中一個IAM頁,IAM頁是用來管理SQL Server已經(jīng)給堆文件分配的空間。MS SQL Server2000用IAM(Index Allocation Map)頁來在堆文件中導(dǎo)航(navigate)。

在堆文件中,數(shù)據(jù)頁(data page)和數(shù)據(jù)頁中數(shù)據(jù)沒有按照特定的順序存儲,也沒有鏈接在一起。數(shù)據(jù)頁之間唯一的邏輯鏈接是通過IAM頁中記錄來實現(xiàn)的。

SQL Server 索引索引結(jié)構(gòu)(Index Structure)

所有的SQL Server 索引都是 B-Trees。在這種樹的頂端有一個根頁(root page),通過root page來訪問N個中級(intermediate level)頁,直到樹的底部、或葉級(leaf level)??梢酝ㄟ^樹中每個節(jié)點的指針從上向下掃描整個索引樹。

另外,每個索引級(index leves)(可能是intermediate leve or leaf level)都有一個頁鏈(page chain)。在一個索引中有許多intermediate level。索引樹的級數(shù)(樹的高度)與索引碼的寬度、索引類型、記錄行數(shù)和表中的頁數(shù)有關(guān),并且索引樹的級數(shù)是影響索引性能的一個重要參數(shù)。

非聚集索引(Nonclustered Indexs)

一個非聚集索引與一本書的索引相似。數(shù)據(jù)存儲在一個地方,SQL Server 索引索引存儲在另外一個地方,可以通過索引中的指針來訪問存儲的數(shù)據(jù)。索引中的條目是按照索引碼的值按序存儲,但是表中的信息可以按照不同的順序存儲(如可以按照聚集索引存儲)。如果表中沒有創(chuàng)建聚集索引,那么表中的記錄就不能保證按照某種特定的順序。

與你用一本書的索引方式一樣,SQL Server2000也是先通過非聚集索引檢索到查找數(shù)據(jù)在表的位置,然后通過該位置來檢索數(shù)據(jù)。這使得非聚集索引非常適合精確匹配查詢(This makes nonclustered indexes the optimal choice for exact match queries),因為索引條目中包含了你需要查找數(shù)據(jù)的位置信息。

如果當(dāng)前的表是以聚集索引方式存儲,那么非聚集SQL Server 索引的位置信息就是聚集索引的索引碼(index key);否則,位置信息就是row ID(RID),每個RID由file number、page number和 slot number of row(每行記錄的槽號)。

比如,要在一個表中檢索某個employee ID(emp_id),該表已經(jīng)有在emp_id列上創(chuàng)建了非聚集索引,SQL Server查找索引樹,找到一個索引條目包含你需要查找的emp_id,然后利用其中RID來訪問到對應(yīng)數(shù)據(jù)頁中的值。

【編輯推薦】

  1. SQL Server 實用操作的代碼演示
  2. SQL Server數(shù)據(jù)庫與identity列
  3. SQL Server 2005數(shù)據(jù)庫安裝實例演示
  4. SQL Server數(shù)據(jù)庫在安裝時的注意事項
  5. SQL Server Compact中的DLL文件與工具

本文標(biāo)題:SQL Server 索引的底層實現(xiàn)概述
標(biāo)題鏈接:http://m.5511xx.com/article/cdidsgp.html