SQL Server 2008資料庫稀疏列和列集的詳解
這是兩個新增的特性。
我的總結如下
1. 稀疏列主要是為了提供對可空欄位的更好一個儲存機制,它可以節省空間(具體說它在真正空值的時候就不佔空間),但也會帶來一些效能方面的影響。所以要有所權衡。
稀疏列主要使用場景:一個實體有很多屬性列,但很多屬性都可能填不滿。這在以前我們稱為屬性集問題。
稀疏列不是一個資料型別,它是一個列的屬性而已。
2. 列集是可以定義所有稀疏列的集合。這是一個XML資料型別。如果為多個稀疏列定義了一個列集,那麼針對這些列的修改,就既可以直接修改這些列,也可以通過一次性通過修改列集欄位來完成。列集欄位其實是一個計算欄位。
下面來看一個例子
首先,看看如何使用稀疏列。這裡的關鍵在於定義的時候使用SPARSE關鍵字:
USE AdventureWorks
GO
CREATE TABLE DocumentStore
(DocID int PRIMARY KEY,
Title varchar(200) NOT NULL,
ProductionSpecification varchar(20) SPARSE NULL,
ProductionLocation smallint SPARSE NULL,
MarketingSurveyGroup varchar(20) SPARSE NULL ) ;
GO
--插入資料是一模一樣的
INSERT DocumentStore(DocID, Title, ProductionSpecification, ProductionLocation)
VALUES (1, 'Tire Spec 1', 'AXZZ217', 27)
GO
INSERT DocumentStore(DocID, Title, MarketingSurveyGroup)
VALUES (2, 'Survey 2142', 'Men 25 - 35')
GO
然後,我們看看如何把列集與稀疏列進行結合使用
USE AdventureWorks;
GO
CREATE TABLE DocumentStoreWithColumnSet
(DocID int PRIMARY KEY,
Title varchar(200) NOT NULL,
ProductionSpecification varchar(20) SPARSE NULL,
ProductionLocation smallint SPARSE NULL,
MarketingSurveyGroup varchar(20) SPARSE NULL,
MarketingProgramID int SPARSE NULL,
SpecialPurposeColumns XML COLUMN_SET FOR ALL_SPARSE_COLUMNS);--目前這裡只是支援ALL_SPARSE_COLUMNS這個關鍵字,也就是說所有的稀疏列
GO
--使用列集之後,既可以直接使用列集插入資料,也可以使用稀疏列本身插入資料
INSERT DocumentStoreWithColumnSet (DocID, Title, ProductionSpecification, ProductionLocation)
VALUES (1, 'Tire Spec 1', 'AXZZ217', 27)
GO
INSERT DocumentStoreWithColumnSet (DocID, Title, MarketingSurveyGroup)
VALUES (2, 'Survey 2142', 'Men 25 - 35')
GO
INSERT DocumentStoreWithColumnSet (DocID, Title, SpecialPurposeColumns)
VALUES (3, 'Tire Spec 2', 'AXW9R41138')
GO
有意思的是,此時如果再以SELECT *的語法查詢該表的話,那些稀疏列預設是不會被返回的,而只是返回列集
當然啦,如果還是想返回稀疏列本身的內容,我們可以通過下面的語法
SELECT DocID, Title, ProductionSpecification, ProductionLocation FROM DocumentStoreWithColumnSet WHERE ProductionSpecification IS NOT NULL ;
至於更新,和插入一樣,兩種方式都是可以的,且效果一樣
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-621552/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sql server資料庫如何儲存陣列,int[]float[]double[]陣列儲存到資料庫方法SQLServer資料庫陣列
- SQL Server資料庫基礎之行資料轉換為列資料SQLServer資料庫
- 資料結構與演算法—稀疏陣列和佇列資料結構演算法陣列佇列
- SQL Server資料庫檢視一個資料表各列的註釋SQLServer資料庫
- SQL Server2008 R2 資料庫映象配置方案SQLServer資料庫
- SQL Server 2016資料庫快照代理過程詳解SQLServer資料庫
- SQL Server 2008中Analysis Services的新特性——深入SQL Server 2008SQLServer
- 稀疏陣列、佇列陣列佇列
- cmd命令列下用命令執行SQL指令碼到SQL Server資料庫中命令列SQL指令碼Server資料庫
- SQL Server 2008的故障轉移叢集概述UBSQLServer
- SQL Server資料庫中Substring函式的用法例項詳解SQLServer資料庫函式
- 詳解SQL Server 2012資料庫備份與還原的教程SQLServer資料庫
- 二維陣列和稀疏陣列互轉陣列
- 稀疏陣列陣列
- SQL Server 2000/2005/2008刪除或壓縮資料庫日誌的方法SQLServer資料庫
- Sql Server資料庫開窗函式Over()的使用例項詳解SQLServer資料庫函式
- (一)Java資料結構之稀疏陣列Java資料結構陣列
- SQL SERVER 2008安全配置SQLServer
- windows server2008安裝mysql資料庫WindowsServerMySql資料庫
- sql server2016叢集資料庫解除安裝SQLServer資料庫
- 資料庫映象 (SQL Server)資料庫SQLServer
- SQL Server資料庫安全SQLServer資料庫
- 【資料結構與演算法】——稀疏陣列資料結構演算法陣列
- SQL Server資料庫調整表中列的順序操作方法及遇到問題SQLServer資料庫
- SQL Server 資料庫檔案的分離和附加SQLServer資料庫
- 稀疏陣列、佇列的概念與實踐陣列佇列
- sql server 資料庫收縮SQLServer資料庫
- Blazor使用sql server 資料庫BlazorSQLServer資料庫
- SQL Server資料庫巡檢SQLServer資料庫
- sql server 2005資料庫快照SQLServer資料庫
- SQL Server收縮資料庫SQLServer資料庫
- 管理SQL Server資料庫安全SQLServer資料庫
- SQL Server資料庫遷移SQLServer資料庫
- SQL Server解惑——標識列的限制和跳號現象SQLServer
- 如何建立和還原SQL Server 2000資料庫?SQLServer資料庫
- 如何建立和還原SQL Server 2005資料庫?SQLServer資料庫
- 20_稀疏陣列陣列
- 資料結構與演算法之稀疏陣列資料結構演算法陣列
- 資料結構與演算法:稀疏陣列(一)資料結構演算法陣列