SQL Server 2008中使用稀疏列和列集的方法

  这篇文章没有讲述很多关于稀疏列的特性,它介绍了具有列集的稀疏列的使用,以及在使用它们时你需要了解和考虑的事情。

  尽管存储的成本已经很低了,但是我们仍然需要考虑使用多种技术(例如压缩和存档)来节省空间。当你思考怎样节省空间时,你第一个想到的是文件系统,但是空间节省也可以用在数据库。当我们创建一个数据库时,我们确保数据文件具有合适的大小和增长速度。我们定期分析我们的数据库规模并执行缩小操作。我们可能执行这些任务用于不同的目的,但是有一个方面是相同的,这些任务帮助我们确保我们的数据库具有最佳的存储。Microsoft SQL Server为我们提供了用于降低数据库所用空间的各种技术。SQL Server 2008推出了一个用于定位可为空字段的技术,它为可为空字段提供了最佳的存储。在SQL Server 2008中的这个新特性就是稀疏列。这篇文章不会讲述很多关于稀疏列的特性,它介绍了具有列集的稀疏列的使用,以及在使用它们时你需要了解和考虑的事情。

  这篇文章描述:

  什么是稀疏列?

  什么是列集?

  在一个列集中插入和更新数据。

  使用触发器跟踪变更。

  对列集实施安全。

  什么是稀疏列?

  稀疏列是一个普通字段,就像其它字段一样,但是它降低了对空值的存储要求。一个可为空字段可以在表创建或修改时添加SPARSE关键字来成为稀疏列。如果一个列是稀疏列,那么SQL Server不会为空值分配空间。注意,在使用这个特性时它会增加对非空值数据提取的花费。因此你需要计算可以节省的空间来仔细地对字段应用这个特性。推荐只在空间至少可以节省20%至40%时使字段成为稀疏列。BLO提供了一个包含字段中每个数据类型所需空值百分比的表,以便使这些字段成为稀疏列。

  什么是列集?

  列集是一个显示所有稀疏列的字段,它作为一个XML类型的字段添加到表中。它不是物理上存在于这个表中的,它只像是一个计算出来的字段,但是它允许你对它进行修改。推荐你只在有很多稀疏列时使用列集,因为如果使用了列集而不是使用各个稀疏列,那么它会加快修改和提取。

  下面的代码显示了为一个表创建一个列集的方法。

  代码1:创建一个具有稀疏列和一个列集的表。 

CREATE TABLE [dbo].[Customers]
(
  [Id] int PRIMARY KEY,
  [FirstName] varchar(50) NOT NULL,
  [LastName] varchar(50) NOT NULL,
  [Gender] bit SPARSE NULL, -- 1 = male, 2 = female
  [Telephone] varchar(15) SPARSE NULL,
  [MonthlyIncome] money SPARSE NULL,
  [Comments] varchar(1000) SPARSE NULL
  [AllSparseColumns] xml COLUMN_SET FOR ALL_SPARSE_COLUMNS
)
Tags: 

延伸阅读

最新评论

发表评论