八、IO最佳化(3)稀疏列

來源:互聯網
上載者:User

一、Nullable

  在設計表時,有時會允許某列可以使用Null值預設)。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131229/211U45539-0.png" title="null.png" alt="110227268.png" />


CREATE TABLE [dbo].[EmpTable2](

[EmpID] [varchar](10) NOT NULL,

[DepID] [nvarchar](10) NULL,

[Title] [nvarchar](10) NULL

)



二、稀疏列

  稀疏列是對 Null 值採用最佳化的儲存方式的普通列。

  稀疏列減少了 Null 值的空間需求,但代價是檢索非 Null 值的開銷增加。 當至少能夠節省 20% 到 40% 的空間時,才應考慮使用稀疏列。



三、稀疏列的使用情境

1. 列集

  使用稀疏列的表可以指定一個列集以返回表中的所有稀疏列。列集是一種非類型化的 XML 表示形式,它將表的所有稀疏列組合成為一種結構化的輸出。列集與計算資料行的相似之處在於,列集並不是物理地儲存在表中。列集與計算資料行的不同之處在於,列集可直接更新。

  稀疏列和列集是通過使用 CREATE TABLE 或 ALTER TABLE 語句定義的。INSERT、UPDATE 和 DELETE 語句可以通過名稱來引用稀疏列。詳見 http://technet.microsoft.com/zh-cn/library/cc280604(v=sql.105).aspx


2. 篩選索引

  對於僅包含少量非 NULL 值的稀疏列,因為稀疏列有許多 Null 值行,所以尤其適用於篩選索引。稀疏列的篩選索引可以僅僅對已填儲值的行編製索引。這會建立一個更小、更有效索引。



本文結語:

  使用稀疏列,可以減小儲存空間,或者建立更有效篩選索引。


本文出自 “我們一起追過的MSSQL” 部落格,轉載請與作者聯絡!

相關文章

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.