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

首頁 > 數據庫 > SQL Server > 正文

對SQL Server索引包含列(Include)的一點認識

2024-08-31 00:56:06
字體:
來源:轉載
供稿:網友

轉http://blog.csdn.net/zhengldg/article/details/9128723

測試數據

[sql] view plain copy 在CODE上查看代碼片Drop table [dbo].[TestTb];  CREATE TABLE [dbo].[TestTb](      [Number] [char](20) Not NULL,      [Dt] [datetime] Not NULL,      [Id] [int] IDENTITY(1,1) )  Declare @rn  as int = 1;  Begin Tran  While(@rn <= 100000)  Begin      Insert Into [dbo].[TestTb](Number,Dt)           Select 'Number'+CAST(@rn as CHAR(7)),DATEADD(MM,CHECKSUM(NewId())%60,GETDATE());      Set @rn = @rn + 1  End  Commit  創建一個沒有包含列的非聚集索引:

[sql] view%20plain copy Create Unique Nonclustered Index idx_nc_number On [dbo].[TestTb](Number);  --查詢索引信息  Select id.name,p.index_level,p.page_count,p.index_id, avg_record_size_in_bytes,max_record_size_in_bytes,min_record_size_in_bytes  from sys.dm_db_index_physical_stats(DB_ID('StudyDB'),Object_id('dbo.testtb'),null,null,'Detailed') as p  Inner Join sys.indexes as  id  On p.index_id = id.index_id  And p.object_id = id.object_id  And p.index_id > 1  結果

從上圖可以看到,目前索引是3級結構,其中Index_Level為0的表示索引的葉級,為1、2的表示索引的非葉級,目前索引葉級的Size是

這樣計算(索引鍵+RID+行開銷):20字節鍵列+8字節Rid+1字節系統開銷%20=%2029字節,索引非葉級(索引鍵+子頁指針+行開銷):20字節鍵列+6字節Rid+1字節系統開銷%20=%2027字節

測試:未添加索引包含列前的查詢

[sql] view%20plain copy DBCC DropCleanBuffers  DBCC FreePRocCache  Set Statistics IO On;  Select Number,dt  From dbo.TestTb  Where Number like 'Number99835'  Set Statistics IO Off;  /*  (1 行受影響)  表 'TestTb'。掃描計數 0,邏輯讀取 4 次,物理讀取 1 次,  預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。  */  [sql] view%20plain copy <strong>結果</strong>  可以看到,沒添加包含列之前,優化器選擇的是索引Seek%20+%201次Rid查找,

為什么此時要進行Rid查找呢,經過前面的分析我們已經知道,此時索引葉級長度為27,根本就沒有存儲dt列,

因此不得不根據8字節的RID定位到頁并進行物理讀取,因此出現了物理讀取1次。物理讀取是開銷十分大的操作,

如果這樣的操作過多,對查詢效率的影響可想而知。而索引包含列便是為解決此類問題而提出。

[sql] view%20plain copy --添加包含列  Drop index  idx_nc_number On dbo.TestTb  Create Unique Nonclustered Index idx_nc_number On dbo.TestTb(Number) Include(dt);  結果

再運行以上查詢索引各級記錄長度,可以看到此時索引的葉級增加了dt列的8個字節,此時長度:20字節鍵列+8字節Rid+1字節系統開銷%20+8字節dt長度%20=%2037字節,因為此時在索引的葉級存儲了dt列,而索引的非葉級長度沒有改變,仍然是27字節。

[sql] view%20plain copy DBCC DropCleanBuffers  DBCC FreeProcCache  Set Statistics  Io On;  Select Number,dt  From dbo.TestTb  Where Number = 'Number99835'  Set Statistics Io Off;  /*  (1 行受影響)  表 'TestTb'。掃描計數 0,邏輯讀取 3 次,物理讀取 0 次,  預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。  */  結果

運行查詢,可以看到,添加包含列后,邏輯掃描3次,其中三層索引占了3頁,物理掃描不見了,因為此時在索引的葉級就可以找到列dt了。

查看此時的執行計劃,是不是已經沒有書簽查找了呢。

[sql] view%20plain copy Drop index  idx_nc_number On dbo.TestTb   

以上測試中,dbo.TestTb的組織形式是堆,也就是說該表沒有聚集索引。當表中有聚集索引時,大致情況跟以上類似,只不過此時非聚集索引葉級不再存儲RID,而是存儲聚集鍵或者聚集鍵+唯一標識。

值得注意的是,當非聚集索引不是唯一時,非聚集索引的非葉級會包括:索引鍵,子頁指針,書簽值。其中當表為聚集表時書簽值為聚集索引鍵或者聚集索引鍵值+唯一標識,當表組織為堆時,書簽值為8字節RID以下代碼dbo.TestTb上創建一個非唯一非聚集索引

[sql] view%20plain copy 派生到我的代碼片Create Nonclustered Index idx_nc_number On dbo.TestTb(Number) Include(dt);  

再運行以上查詢索引各級記錄長度,此時,相比較之前創建的唯一非聚集索引,非唯一非聚集索引的非葉級居然多了8字節RID書簽值。

我覺此時似乎是嚴重冗余了,盡管是非常有必要的。當表組織為堆時還好,最多也就增加8字節長度,然而如果是聚集表時,則鍵列可能增加900多字節,

如果索引中每行都存儲這900多字節的書簽值,勢必會導致索引級數的增加,從而增加IO讀取次數而嚴重影響查詢效率。總結

索引包含列的優勢:1、索引包含列可以減少書簽查找,提高查找效率;2、索引包含列的包含列不會增加非葉級索引寬度,意味著不會因為非葉級寬度而增加頁數。3、索引包含列不受900字節、最多16個鍵列以及無法在大類型數據列如(varchar(max))上創建鍵列的限制。

當然,使用索引包含列也會增加索引葉級的寬度,可能會導致更多頁存儲甚至索引級數增加,這就要看你如果適當處理了。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
人人爽久久涩噜噜噜网站| 欧美怡春院一区二区三区| 91高清视频在线免费观看| 国产精品成人免费电影| 亚洲xxxx3d| 欧美午夜激情在线| 日韩电影在线观看永久视频免费网站| 亚洲欧美另类自拍| 国产亚洲精品久久久久动| 欧美一区二区三区四区在线| 91在线视频导航| 成人免费观看网址| 国产午夜精品免费一区二区三区| 国产日韩在线亚洲字幕中文| 亚洲精品98久久久久久中文字幕| 久久久综合av| 亚洲日本成人女熟在线观看| 国产亚洲精品美女久久久| 亚洲欧美制服另类日韩| 中文综合在线观看| 久久中文字幕在线| 久久精品成人一区二区三区| 欧美激情中文字幕在线| 国产精品久久久一区| 亚洲欧美综合图区| 亚洲成av人片在线观看香蕉| 一本一本久久a久久精品综合小说| 中文字幕v亚洲ⅴv天堂| 正在播放欧美一区| 中文字幕日韩视频| 久久亚洲欧美日韩精品专区| 欧美亚洲在线播放| 国产成人精品最新| 欧美电影在线观看高清| 欧美精品videossex88| 日韩成人在线免费观看| 久久久久久久久综合| 91国自产精品中文字幕亚洲| 国产精品免费视频xxxx| 少妇高潮久久77777| 91丝袜美腿美女视频网站| 欧美国产亚洲视频| 久久成人精品电影| 91亚洲国产精品| 国产精品视频26uuu| 久久精品中文字幕一区| 色悠悠国产精品| 97国产一区二区精品久久呦| 欧美日韩一区二区精品| 91久久在线观看| 欧美夫妻性视频| 久久在线观看视频| 成人免费自拍视频| 久久成人18免费网站| 国产精品九九九| 岛国av一区二区在线在线观看| 欧美亚洲午夜视频在线观看| 国产成人精品久久久| 影音先锋欧美在线资源| 国产精品福利观看| 国产精品久久久久久久久借妻| 欧美另类第一页| 国产精品主播视频| 亚洲美女动态图120秒| 国模吧一区二区| 欧美日韩美女在线观看| 日韩精品中文字幕久久臀| 亚洲欧美日韩精品久久奇米色影视| 亚洲男女自偷自拍图片另类| 久久精品国产清自在天天线| 午夜欧美不卡精品aaaaa| 北条麻妃一区二区三区中文字幕| 国产精品第七影院| 日韩欧美一区二区在线| 日本韩国欧美精品大片卡二| 欧美国产日产韩国视频| 精品国产一区二区三区久久| 精品精品国产国产自在线| 欧美一级视频在线观看| 奇门遁甲1982国语版免费观看高清| 亚洲成av人乱码色午夜| 亚洲色图五月天| 欧美成人午夜剧场免费观看| 九九久久久久久久久激情| 精品久久久久久久久久久久| 欧美视频在线观看 亚洲欧| 夜夜嗨av一区二区三区免费区| 欧美日韩免费区域视频在线观看| 青草热久免费精品视频| 久久国产精品影片| 国产精品观看在线亚洲人成网| 色狠狠av一区二区三区香蕉蜜桃| 久久久久久久网站| 亚洲第一色中文字幕| 亚洲精品www久久久| 久久黄色av网站| 日韩中文字幕欧美| 91精品国产成人www| 日韩在线播放av| 国产伦精品免费视频| 久久久视频免费观看| 日韩三级影视基地| 午夜美女久久久久爽久久| 日韩中文字幕视频在线观看| 国产精品video| 欧美国产日韩一区| 在线视频日本亚洲性| 亚洲第一男人天堂| www.日韩av.com| 欧美丰满少妇xxxxx做受| 2019亚洲日韩新视频| 538国产精品一区二区免费视频| 国产91ⅴ在线精品免费观看| 高清一区二区三区日本久| 91九色视频在线| 中文字幕久热精品视频在线| 亚洲一区二区福利| 日韩成人av网址| 国产香蕉一区二区三区在线视频| 欧美一级视频免费在线观看| 国产成一区二区| 亚洲精品在线91| 亚洲国产成人精品久久久国产成人一区| 欧美限制级电影在线观看| 亚洲变态欧美另类捆绑| 亚洲人永久免费| 日韩免费电影在线观看| 91久久精品日日躁夜夜躁国产| 亚洲精品国产精品自产a区红杏吧| 色哟哟入口国产精品| 91色p视频在线| 欧美乱大交做爰xxxⅹ性3| 97超碰蝌蚪网人人做人人爽| 欧美激情亚洲激情| 亚洲精品之草原avav久久| 欧美激情第一页xxx| 国产精品一区二区三区久久| 国内精品免费午夜毛片| 国产精品视频精品视频| 国产精品自产拍在线观| 日韩一区二区三区国产| 久久影院模特热| 青青久久av北条麻妃黑人| 亚洲午夜精品视频| 亚洲国产精品中文| 国产乱肥老妇国产一区二| 亚洲精品欧美日韩专区| 亚洲va国产va天堂va久久| 97久久精品人人澡人人爽缅北| 国产999精品久久久| 国产综合久久久久久| 欧美中文在线观看国产| 亚洲精品自在久久| 欧美国产高跟鞋裸体秀xxxhd| 欧美日韩人人澡狠狠躁视频| 亚洲精品综合久久中文字幕| 久久久久久久97| 欧美伊久线香蕉线新在线| 国产精品久久久久免费a∨大胸| 日本久久久久久久| 国产97在线|亚洲| 日韩精品极品在线观看播放免费视频| 日韩亚洲成人av在线| 久久亚洲精品毛片|