SQL Server索引中include的魅力(具有包含性列的索引)

來源:互聯網
上載者:User

開文之前首先要講講幾個概念

【覆蓋查詢】

當索引包含查詢引用的所有列時,它通常稱為“覆蓋查詢”。

【索引覆蓋】

如果返回的資料列就包含於索引的索引值中,或者包含於索引的索引值+叢集索引的索引值中,那麼就不會發 生Bookup Lookup,因為找到索引項目,就已經找到所需的資料了,沒有必要再到資料行去找了。這種情況 ,叫做索引覆蓋;

【複合索引】

和複合索引相對的就是單一索引了,就是索引只包含一個欄位,所以複合索引就是包含兩個或者多個 欄位的索引;

【非鍵列】

鍵列就是在索引中所包含的列,當然非鍵列就是該索引之外的列了;

下面就開始今天的主題

【摘要1】

在 SQL Server 2005 中,可以通過將非鍵列添加到非叢集索引的分葉層級來擴充非叢集索引的功能 。通過包含非鍵列,可以建立覆蓋更多查詢的非叢集索引。這是因為非鍵列具有下列優點:

* 它們可以是不允許作為索引鍵列的資料類型。

* 在計算索引鍵列數或索引鍵大小時,資料庫引擎不考慮它們。

當查詢中的所有列都作為鍵列或非鍵列包含在索引中時,帶有包含性非鍵列的索引可以顯著提高查詢 效能。這樣可以實現效能提升,因為查詢最佳化工具可以在索引中找到所有列值;不訪問表或叢集索引資料, 從而減少磁碟 I/O 操作。

說明:第一:只能是針對非叢集索引;第二:比起複合索引是有效能上的提升的,因為索引的大小變 小了;

【摘要2】

鍵列儲存在索引的所有層級中,而非鍵列僅儲存在分葉層級中。

說明:這就表現為包含與不包含的關係了。有關索引層級的詳細資料,請參閱表組織和索引組織。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.