1. INTRO
SQL Server 601是微软最新的SQL Server版本,该版本带来了许多新的或改进的功能。本文将介绍其中的一些新功能,以及以前版本中存在的问题和如何使用这些新功能来解决这些问题。
2. ROW-GROUP MINIMIZATIONS
2.1. Introduction
在过去的版本中,为了提高查询性能,用户经常使用聚集索引。但是,在某些情况下,聚集索引可能会导致查询性能下降,因为每次查询都需要扫描整个表。最近的SQL Server 601版本通过将表拆分为行组以及新的查询操作来解决这个问题。
2.2. Row-Group Minimizations
行组最小化使极大大减少了磁盘I/O。 Row-Group是指具有相似行的一组行。例如,如果存储了销售订单表,则可以将其划分为许多行组:一个组由来自同一区域的订单组成,另一个组由单个商品的订单组成,而另一个组则由从一年开始的订单组成。现在,通过将行组存储在列存储索引中,查询可以针对少量行组执行,而不是对整个表执行。此外,行组可以压缩和解压缩,以减少磁盘空间和I/O。
下面是一段代码,展示如何利用新功能改进查询性能:
if OBJECT_ID(N'dbo.MyTable', N'U') is not null
DROP TABLE dbo.MyTable;
CREATE TABLE dbo.MyTable
(ID INT PRIMARY KEY,
Value VARCHAR(50) NOT NULL,
LoadedDate DATE NOT NULL,
LoadID INT);
INSERT INTO dbo.MyTable(ID, Value, LoadedDate)
SELECT
ABS(CHECKSUM(NEWID())%10000) + 1,
REPLICATE(N'A',50),
'2016-01-01' + CAST(ABS(CHECKSUM(NEWID())%365) AS VARCHAR(3))
FROM
sys.all_columns AS AC1
CROSS JOIN
sys.all_columns AS AC2;
SELECT COUNT(*) FROM dbo.MyTable
CREATE CLUSTERED COLUMNSTORE INDEX cci
ON dbo.MyTable;
SELECT COUNT(*) FROM dbo.MyTable;
在上述代码中,我们首先创建了一个表,然后插入了1000万条数据。然后,我们在该表上创建了一个聚集列存储索引,然后再次查询表中的行数。结果证明,使用列存储可以显著提高查询性能。
3. JSON DATA
3.1. Introduction
JSON数据成为了现在常见的数据格式之一。与之前必须使用XML来处理相比,JSON具有许多优点,例如具有更好的网络性能和易于使用。SQL Server 601现在支持JSON数据类型,这是一个重大的改进。
3.2. JSON Data
JSON数据类型是一种可用于表示结构化和半结构化数据的新数据类型。SQL Server 601提供了多个函数,以便开发人员可以轻松地转换数据类型和属性。
下面是一些示例代码,展示如何使用JSON数据类型:
CREATE TABLE demo ( jdata JSON )
INSERT INTO demo VALUES( N'{"a":1,"b":2,"c":3}' )
SELECT * FROM demo
WHERE jdata.value('$.a', 'int') > 1
SELECT jdata.value('$.c', 'int') as ColumnC
FROM demo
WHERE jdata.value('$.a', 'int') > 1
在上述代码中,我们首先创建了一个表并插入一些JSON数据,然后查询了某个属性的值。 jdata.value()。JSON函数用于检索属性值。
4. CONCLUSION
新版本的SQL Server 601带来了一些新的和改进的功能,使得在数据库中处理半结构化和非结构化数据以及提高查询性能变得更加容易。行组最小化和JSON数据类型是其中两个最重要的新功能,使得进行这些操作变得轻松简单,同时提高了整个数据库的性能。