玖叶教程网

前端编程开发入门

SQL Server 2017更新内容两点

由于工作的原因,最近开始部署SQL Server 2017。今天就谈谈SQL Server 2017相对于SQL Server 2016的两个更新点——因为SQL Server 2017更新的内容太多,只说一下我在工作上用的到部分。

(1) STRING_AGG串联字符串函数

这个函数可以说是“千呼万唤始出来”!以前要用类似的功能,只能自己写扩展函数。原生的函数,在效率上可能更高。

https://docs.microsoft.com/zh-cn/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-2017

语法:

STRING_AGG ( expression, separator ) [ <order_clause> ]
<order_clause> ::= 
 WITHIN GROUP ( ORDER BY <order_by_expression_list> [ ASC | DESC ] )

示例:

SELECT STRING_AGG (FirstName, ',') AS Name
FROM Person.Person
GROUP BY FirstName; 

结果:

Syed,Catherine,Kim,Hazem,...

(2) COLUMNSTORE INDEX列存储索引支持max长度

SQL Server 2017的聚集列存储索引,开始支持nvarchar(max),varchar(max),varbinary(max)的数据类型。

https://docs.microsoft.com/zh-cn/sql/t-sql/statements/create-columnstore-index-transact-sql?view=sql-server-2017

由于SQL Server从2016才开始支持JSON格式,通常用nvarchar(max)的类型保存。我们会不定期的把历史数据从主表,移动到存档表里面,创建列存储索引,以保证主表的查询效率。但是在SQL Server2016不支持nvarchar(max)的数据类型,就要手工写代码把超长的nvarchar(max)字段拆分成多个nvarchar(4000)字段。无形当中,就增加了维护的难度。

SQL Server 2017的列存储索引,又为我们的运维提供了不少的方便!

以上就是我目前用到的SQL Server 2017两点更新。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言