SQL Server ->> 分区表上创建唯一分区索引

今天在读《Oracle高级SQL编程》这本书的时候,在关于Oracle的全局索引的章节里面有一段讲到如果对一张分区表创建一条唯一索引,而索引本身也是分区的,那就必须把分区列也加入到索引列表中去,当然不一定要再第一列。后来自己就去SQL Server上也试了一下。果真和Oracle一样的道理。再看到后面章节算是理解了。因为如果表被分区了,其实就是每个分区等于一个索引树了。这也就是为什么在SQL Server下这张sys.partitions系统视图中每个partition对应了一个hobt_id。

create partition function PF_One_Fifty_OneHundred(INT)
AS RANGE LEFT FOR VALUES(1,50,100)
GO

CREATE PARTITION SCHEME PS_One_Fifty_OneHundred
AS PARTITION PF_One_Fifty_OneHundred
TO ([PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY]);
GO

--DROP TABLE  dbo.partition_test

create table dbo.partition_test
(
    col1 INT    ,
    col2 INT

) ON PS_One_Fifty_OneHundred(col1)
GO

CREATE UNIQUE INDEX UIX_partition_test_col1 ON dbo.partition_test(col1) ON PS_One_Fifty_OneHundred(col2);

Msg 1913, Level 16, State 1, Line 35
The operation failed because an index or statistics with name ‘UIX_partition_test_col1‘ already exists on table ‘dbo.partition_test‘.
时间: 2024-10-10 21:56:27

SQL Server ->> 分区表上创建唯一分区索引的相关文章

Northwind数据库不能在SQL Server 2012上创建

附加mdf文件不出意料会提示数据库格式无法兼容,试着通过脚本来创建,会有以下错误提示: Could not find stored procedure 'sp_dboption'. 原因是SQL Server 2012不再支持sp_dboption存储过程,解决办法也很简单. 把下面两句注释或者删除 exec sp_dboption 'Northwind','trunc. log on chkpt.','true' exec sp_dboption 'Northwind','select int

SQL Server 分区表的创建方法与管理

背景知识: 分区表.可以把表中的数据按范围保存到不同的文件组中. 举个例子吧: 2014年以前的数据保存到文件组A 2014~2015的数据保存到文件组B 2015年以后的数据保存到文件组C 好处: 1.提高IO性能 --- 文件组中的文件可以位于不同的磁盘,多磁盘协同工作,提升性能. 2.方便管理 --- 备份方面为管理提供了更多的选择,数据归档方便. 前期准备:添加文件组与文件 alter database Studio             add filegroup FG1;     

PLSQL_Oracle分区表和相应的分区索引管理和使用(案例)(创建交易表等大表时进行分区提高效率)

2014-08-22 BaoXinjian 一.摘要 1.分区表: 随着表的不断增大,对于新纪录的增加.查找.删除等(DML)的维护也更加困难.对于数据库中的超大型表,可通过把它的数据分成若干个小表,从而简化数据库的管理活动.对于每一个简化后的小表,我们称为一个单个的分区 对于分区的访问,我们不需要使用特殊的SQL查询语句或特定的DML语句,而且可以单独的操作单个分区,而不是整个表.同时可以将不同分区的数据放置到不同的表空间,比如将不同年份的销售数据,存放在不同的表空间,即年的销售数据存放到TB

SQLServer之创建唯一聚集索引

创建唯一聚集索引典型实现 唯一索引可通过以下方式实现: PRIMARY KEY 或 UNIQUE 约束 在创建 PRIMARY KEY 约束时,如果不存在该表的聚集索引且未指定唯一非聚集索引,则将自动对一列或多列创建唯一聚集索引. 主键列不允许空值. 在创建 UNIQUE 约束时,默认情况下将创建唯一非聚集索引,以便强制 UNIQUE 约束. 如果不存在该表的聚集索引,则可以指定唯一聚集索引. 有关详细信息,请参阅 Unique Constraints and Check Constraints

在分区表上创建Unique Index

在创建FullText Index之前,指定的Table上必须存在一个只包含Single column的 unique index.如果在分区表上创建的Unique Index 不包括Partition Column,SQL Server 抛出Error Message,脚本如下 CREATE UNIQUE NONCLUSTERED INDEX UQ_IDX_IndexName ON Schema_Name.table_name ( [col1] ) with(data_compression=

SQL Server数据库进阶之表分区实战演练

一.课程介绍 1.1.需求背景 假设,你有一个销售记录表,记录着每个销售情况,那么你就可以把这个销售记录表按时间分成几个小表,例如说5个小表吧.2009年以前的记录使用一个表,2010年的记录使用一个表,2011年的记录使用一个表,2012年的记录使用一个表,2012年以后的记录使用一个表.那么,你想查询哪个年份的记录,就可以去相对应的表里查询,由于每个表中的记录数少了,查询起来时间自然也会减少.但将一个大表分成几个小表的处理方式,会给程序员增加编程上的难度.以添加记录为例,以上5个表是独立的5

解读SQL Server 2014可更新列存储索引——存储机制

概述 SQL Server 2014被号称是微软数据库的一个革命性版本,其性能的提升的幅度是有史以来之最. 可更新的列存储索引作为SQL Server 2014的一个关键功能之一,在提升数据库的查询性能方面贡献非常突出.据微软统计,在面向OLAP查询统计类系统中,相比其他SQL传统版本的数据库,报表查询的性能最大可提升上十倍. 下面我们从存储的角度来了解下SQL Server 2014的可更新列存储索引. 什么是列存储 微软为了提升SQL Server的查询性能,更好的支持大数据分析,早在SQL

SQL Server 性能调优3 之索引(Index)的维护

SQL Server 性能调优3 之索引(Index)的维护 热度1 评论 16 作者:溪溪水草 前言 前一篇的文章介绍了通过建立索引来提高数据库的查询性能,这其实只是个开始.后续如果缺少适当的维护,你先前建立的索引甚至会成为拖累,成为数据库性能的下降的帮凶. 查找碎片 消除碎片可能是索引维护最常规的任务,微软官方给出的建议是当碎片等级为 5% - 30% 之间时采用 REORGANIZE 来“重整”索引,如果达到 30% 以上则使用 REBUILD 来“重建”索引.决定采用何种手段和操作时机可

SQL Server 2016:内存列存储索引

作者 Jonathan Allen,译者 谢丽 SQL Server 2016的一项新特性是可以在"内存优化表(Memory Optimized Table)"上添加"列存储索引(Columnstore Index)".要理解这是什么意思,我们应该首先解释术语列存储索引和内存优化表.列存储索引是一种按照列而不是行组织数据的索引.每个数据块只存储一个列的数据,最多包含100万行.因此,如果数据为5列1000万行,那么就需要存储在50个数据块中.当只查询部分列时,这种数