亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

索引深入淺出(5/10):非聚集索引的B樹結構在堆表

2024-07-21 02:47:06
字體:
來源:轉載
供稿:網友
索引深入淺出(5/10):非聚集索引的B樹結構在堆表

在“索引深入淺出:非聚集索引的B樹結構在聚集表”里,我們討論了在聚集表上的非聚集索引,這篇文章我們討論下在堆表上的非聚集索引。

非聚集索引可以在聚集表或堆表上創建。當我們在聚集表上創建非聚集索引時,聚集索引鍵擔當為行指針。在堆表里,文件號,頁號和槽號(file id , page number and slot number)的組合在非聚集索引里擔當為行指針。

我們來看下手頭的一個例子。我們創建salesorderdetail表的副本,并在上面的PRoductid和salesorderid列創建創建非聚集索引。

1 DROP TABLE SalesOrderDetailHeap2 3 SELECT * INTO dbo.SalesOrderDetailHeap FROM AdventureWorks2008r2.Sales.SalesOrderDetail4 GO5 CREATE UNIQUE INDEX Ix_ProductId ON SalesOrderDetailHeap(ProductId,Salesorderid) 

收集非聚集索引相關信息:

 1 TRUNCATE TABLE dbo.sp_table_pages 2 INSERT INTO sp_table_pages EXEC('DBCC IND(IndexDB,SalesOrderDetailHeap,2)') 3 GO 4  5 SELECT * FROM dbo.sp_table_pages ORDER BY IndexLevel DESC --根節點/索引頁 6 DBCC TRACEON(3604) 7 DBCC PAGE(IndexDB,1,3720,3) 8  9 DBCC TRACEON(3604)10 DBCC PAGE(IndexDB,1,3608,3)--葉子節點/索引頁11 12 DBCC TRACEON(3604)13 DBCC PAGE(IndexDB,1,3908,3)--葉子節點/索引頁14 SELECT * FROM dbo.sp_table_pages WHERE IndexLevel=0 --葉子節點/索引頁

根據上述信息進行非聚集索引邏輯示意圖的繪制:

現在我們來分析下SQL Server如何存儲堆表的非聚集索引,首先我們通過DBCC IND命令查看非聚集索引的頁分配情況,最后一個參數,2是Ix_ProductId的索引號。

1 DBCC ind('IndexDB','SalesOrderDetailHeap',2)

一共返回298條記錄,包括1個IAM頁,288個索引頁,我們用下列語句找下根層的頁號:

1 SELECT * FROM dbo.sp_table_pages ORDER BY IndexLevel DESC 

可以看到,indexlevel列最大值1的頁號是3270,這個頁就是根頁,因為indexlevel列最大值是1,所以這個堆表的非聚集索引的B樹結構只有2層,即根層和葉子層,也就是說288個索引頁中,1個頁是根層的根頁(也是索引頁),287個頁是葉子層的索引頁。我們來看看3270頁的信息。

1 DBCC TRACEON(3604)2 DBCC PAGE(IndexDB,1,3720,3)

輸出結果,和聚集表里的非聚集索引的根頁結構是一樣的。

我們來看看葉子層的3608頁。

1 DBCC TRACEON(3604)2 DBCC PAGE(IndexDB,1,3608,3)--葉子節點/索引頁

在聚集表的非聚集索引的葉子層,聚集鍵與非聚集鍵一齊加入了葉子層的頁。這里我們沒有聚集索引,索引SQL Server加了個行標識號(8 bytes大?。晌募枺? bytes),頁號(4 bytes)和槽號(2 bytes)組合而成。

從上圖我們可以清楚看出,productid值為707,salesorderid值為43665的記錄完整信息,可以在HeapRID 0xB800000001003E00位置找到。下面的查詢可以幫我們把RID轉為文件號:頁號:槽號(FileId:PageId:SlotNo)格式。

 1 DECLARE @HeapRid BINARY(8) 2 SET @HeapRid = 0xB800000001003E00 3 SELECT       4        CONVERT (VARCHAR(5), 5                     CONVERT(INT, SUBSTRING(@HeapRid, 6, 1) 6                                + SUBSTRING(@HeapRid, 5, 1))) 7      + ':' 8      + CONVERT(VARCHAR(10), 9                     CONVERT(INT, SUBSTRING(@HeapRid, 4, 1)10                                + SUBSTRING(@HeapRid, 3, 1)11                                + SUBSTRING(@HeapRid, 2, 1)12                                + SUBSTRING(@HeapRid, 1, 1)))13      + ':'14           + CONVERT(VARCHAR(5),15                     CONVERT(INT, SUBSTRING(@HeapRid, 8, 1)16                                + SUBSTRING(@HeapRid, 7, 1)))17                                AS 'Fileid:Pageid:Slot' 

1:184:62表示文件號:1 ,頁號:184 ,槽號:62。我們來看看184頁。

1 DBCC TRACEON(3604)2 DBCC PAGE(IndexDB,1,184,3)       

從輸出我們可以看到,productid值為707,salesorderid值為43665的記錄所有列可以在槽號62找到,與1:184:62表示文件號:1 ,頁號:184 ,槽號:62完全一致。

我們通過下面的查詢看看SQL Server如何使用非聚集索引查找堆表上的數據,點擊工具欄的顯示包含實際的執行計劃。

1 SET STATISTICS IO ON2 GO3 SELECT *  FROM SalesOrderDetailHeap WHERE productid=707 AND SalesOrderid=43665    

SQL Server需要進行2次I/O操作到達非聚集索引的葉子層,1次I/O操作通過使用RID查找(堆)拿到剩下的數據。執行計劃如下所示:

即使我們將查詢語句修改為,只要ProductId,SalesOrderid,SalesorderDetailId這3列,SQL Server還是要進行鍵查找(Key lookup)操作。

1 SET STATISTICS IO ON2 GO3 SELECT *  FROM SalesOrderDetailHeap WHERE productid=707 AND SalesOrderid=43665    4  5 SET STATISTICS IO ON6 GO7 SELECT ProductId,SalesOrderid,SalesOrderDetailID FROM SalesOrderDetailHeap WHERE productid=707 AND SalesOrderid=43665       

這是因為,SalesorderDetailId列沒有定義為聚集鍵,在非聚集索引的葉子層沒有這列。為了避免鍵查找(key lookup)操作,我們需要將列限制到只有非聚集索引鍵(ProductKey ,salesorderid)。

1 SET STATISTICS IO ON2 GO3 SELECT ProductId,SalesOrderid FROM SalesOrderDetailHeap WHERE productid=707 AND SalesOrderid=43665  

如上圖所示,只有非聚集索引查找操作,沒有鍵查找(Key lookup)操作了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
自拍偷拍亚洲精品| 波霸ol色综合久久| 国产精品久久久久久久久久久久久久| 成人激情视频在线观看| 国产亚洲精品一区二区| 怡红院精品视频| 51色欧美片视频在线观看| 欧美床上激情在线观看| 国产精品欧美日韩一区二区| 欧美激情在线一区| 国产美女高潮久久白浆| 日韩免费观看网站| 欧美日韩国产限制| 91禁外国网站| 欧美丰满少妇xxxxx| 国产成人亚洲综合青青| 91在线免费视频| 国产成人精品视频| 亚洲人成绝费网站色www| 在线日韩欧美视频| 精品久久久久久久久久久久| 亚洲精品720p| 亚洲free性xxxx护士hd| 欧美裸身视频免费观看| 久久国内精品一国内精品| 日韩欧美福利视频| 国产午夜精品理论片a级探花| 亚洲一区二区三区香蕉| 午夜精品在线视频| 久久成人精品一区二区三区| 久久99久久久久久久噜噜| 国内精品中文字幕| 午夜精品久久久久久久99热| 色中色综合影院手机版在线观看| 精品自拍视频在线观看| 国产精品成人播放| 亚洲人午夜色婷婷| 2025国产精品视频| 国产精品av在线播放| 欧美精品制服第一页| 欧美激情一二三| 国产精品久久久久久婷婷天堂| 亚洲xxx自由成熟| 亚洲女人被黑人巨大进入| 影音先锋日韩有码| 国产97色在线| 亚洲资源在线看| 4388成人网| 理论片在线不卡免费观看| 国产+人+亚洲| 久久久久久久久久久91| 丁香五六月婷婷久久激情| 91美女片黄在线观看游戏| 国产精品96久久久久久| 亚洲欧美激情另类校园| 日本精品久久中文字幕佐佐木| 亚洲最大福利视频| 欧美激情亚洲视频| 亚洲国产天堂久久综合网| 亚洲女人被黑人巨大进入| 亚洲精品免费一区二区三区| 国产欧美一区二区三区在线看| 亚洲日韩中文字幕在线播放| 欧美日韩亚洲精品一区二区三区| 欧美黑人性视频| 日韩二区三区在线| 国产成人综合亚洲| 国产欧美日韩免费| xxxxx成人.com| 亚洲美女自拍视频| 日韩电影免费在线观看| 久久久久久国产免费| 日韩小视频在线观看| 日韩av成人在线| 亚洲福利视频免费观看| 亚洲自拍欧美另类| 国产精品一区二区av影院萌芽| 欧美日韩国产成人在线观看| 久久综合久中文字幕青草| 欧洲一区二区视频| 日本亚洲欧美三级| 欧美日本国产在线| 最新国产精品亚洲| 日本免费一区二区三区视频观看| www.亚洲成人| 欧美亚洲第一区| 亚洲白虎美女被爆操| 久久久电影免费观看完整版| 中文字幕亚洲二区| 日本精品久久久久久久| 国产精品久久久久久久天堂| 欧美成人精品不卡视频在线观看| 色哟哟入口国产精品| 欧美激情在线有限公司| 在线播放国产一区二区三区| 久久国产加勒比精品无码| 欧美男插女视频| 日韩在线观看av| 日韩有码在线视频| 欧美洲成人男女午夜视频| 欧美老少做受xxxx高潮| 91精品视频在线| 久久中文精品视频| 亚洲va久久久噜噜噜| 亚洲一区国产精品| 51视频国产精品一区二区| 久久久www成人免费精品| 日韩美女视频免费在线观看| 精品性高朝久久久久久久| 亚洲精品一区二区三区婷婷月| 国产午夜精品久久久| 亚洲国产又黄又爽女人高潮的| 亚洲精品综合久久中文字幕| 亚洲精品456在线播放狼人| 国产ts一区二区| 性日韩欧美在线视频| 亚洲精品狠狠操| 欧美黑人一区二区三区| 国产69精品久久久久9999| 亚洲福利在线播放| 日韩有码片在线观看| 亚洲亚裔videos黑人hd| 成人激情视频在线观看| 美女久久久久久久久久久| 国产精品日日摸夜夜添夜夜av| 国产v综合ⅴ日韩v欧美大片| 亚洲成人a级网| 国产91精品久久久久久| 国产欧美日韩精品在线观看| 亚洲在线视频观看| 亚洲成av人片在线观看香蕉| 国产精品久久婷婷六月丁香| 色综合天天狠天天透天天伊人| 国产成人aa精品一区在线播放| 国产精品入口免费视| 欧美一级片免费在线| 国内免费精品永久在线视频| 欧美日韩国产综合新一区| 欧美激情欧美狂野欧美精品| 亚洲欧美日韩在线高清直播| 91色琪琪电影亚洲精品久久| 亚洲成av人影院在线观看| 精品久久久久久中文字幕一区奶水| 久久视频这里只有精品| 日韩美女写真福利在线观看| 国产精品户外野外| 美女扒开尿口让男人操亚洲视频网站| 国产99久久精品一区二区永久免费| 美女黄色丝袜一区| 色哟哟入口国产精品| 狠狠躁天天躁日日躁欧美| 欧美精品久久久久久久免费观看| 欧美另类69精品久久久久9999| 午夜精品久久17c| 亚洲一级黄色av| 国产精品美女免费看| 久久99久国产精品黄毛片入口| 上原亚衣av一区二区三区| 91精品在线观看视频| 精品国产区一区二区三区在线观看| 主播福利视频一区| 国产精品精品一区二区三区午夜版| 久久精品国产欧美亚洲人人爽| 永久免费看mv网站入口亚洲|