亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SQL Server中的覆蓋索引和覆蓋查詢是什么?

SQL Server中的覆蓋索引和覆蓋查詢是什么?

SMILET 2019-12-13 15:10:01
您能否解釋Microsoft SQL Server中Covering Index和Covered Queries的概念及其之間的關系?
查看完整描述

3 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

覆蓋索引是一種可以滿足查詢中所有請求列的索引,而無需對聚集索引進行進一步查找。


沒有覆蓋查詢之類的東西。


查看完整回答
反對 回復 2019-12-14
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

如果查詢列表中請求的所有列select都在index中可用,則查詢引擎不必再次查找表,這可以顯著提高查詢的性能。由于所有請求的列在索引中都可用,因此索引涵蓋了查詢。因此,該查詢稱為覆蓋查詢,而索引是覆蓋索引。

如果選擇列表中的列來自同一表,則聚集索引始終可以覆蓋查詢。


查看完整回答
反對 回復 2019-12-14
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

覆蓋指數是一個Non-Clustered指數。聚簇索引和非聚簇索引都使用B樹數據結構來改進數據搜索,不同之處在于,在聚簇索引的葉子中,整個記錄(即行)實際上都存儲在此處!非聚集索引的大小寫。以下示例對此進行了說明:

示例:我有一個包含三列的表:ID,Fname和Lname。

http://img1.sycdn.imooc.com//5db7aa63000102ac08580343.jpg

但是,對于非聚集索引,有兩種可能性:表已經具有聚集索引,或者沒有:

http://img1.sycdn.imooc.com//5db7aa6a00015db313650848.jpg

正如兩個圖所示,這樣的非聚集索引不能提供良好的性能,因為它們無法僅從B樹中找到喜歡的值(即Lname)。相反,他們必須執行額外的“查找”步驟(查找“密鑰”或“ RID”)以查找Lname的值。并且,這是覆蓋索引進入屏幕的地方。在這里,ID上的非聚集索引覆蓋了B樹的葉子中緊挨著它的Lname的值,并且不再需要任何類型的查找。

http://img1.sycdn.imooc.com//5db7aa730001388209140311.jpg



查看完整回答
反對 回復 2019-12-14
  • 3 回答
  • 0 關注
  • 489 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號