Sql Server Hash 分区

Sql Server Hash 分区

--分区函数
CREATE PARTITION FUNCTION [zping.com.pf](int) AS
RANGE LEFT FOR VALUES (-1073741824, 0, 1073741824)
 
--分区方案
CREATE PARTITION SCHEME [zping.com.ps] AS
PARTITION [zping.com.pf] all TO ([PRIMARY])
 
--建立分区表
CREATE TABLE [dbo].[zping.com](
[id] [varchar](32) NOT NULL,
[sid] int,
[hashid] AS (checksum([id])) PERSISTED
)
ON [zping.com.ps] ([hashid])
--注意:1,这里我们使用了计算列的做为分区列,在SQL server 2005中,分区列如果是计算列,必须PERSISTED持久化
--2,我们这里使用了checksum(列)这个哈希函数,该函数用来计算id的hash值,这个函数同时可以用来建立hash索引
 
--插入1万条测试数据
insert into [zping.com](id,sid)
select replace(newid(),'-',''),1 from (select top 100 * from syscolumns) a,(select top 100 * from syscolumns) b
 
--查看数据的分布分区情况
SELECT $partition.[zping.com.pf](hashid) AS 分区号,count(*) 数据条数
FROM [zping.com]
group by $partition.[zping.com.pf](hashid)
你需要了解下这些信息:
1. 如果一个文件组有多个文件,数据会按文件大小比例写入到各个文件中;如果文件满了,就循环写入同组中的其他文件;
2. 如果是不同文件组,则需要指定表或索引存储在某个文件组中,表或索引只能存储在一个文件组中;
你上面创建的是新的文件组 [201109],如果想让这个文件组存储数据,就把表切换到这个文件组中(参考: SQLServer 2008 切换表的存储文件组)。
若想让一个表在多个文件组中存储数据,那就将表进行分区。
下面的表总结了何时使用聚集索引或非聚集索引(很重要):
动作描述
使用聚集索引
使用非聚集索引
列经常被分组排序
返回某范围内的数据
不应
一个或极少不同值
不应
不应
小数目的不同值
不应
大数目的不同值
不应
频繁更新的列
不应
外键列
主键列
频繁修改索引列
不应
posted on 2018-08-11 13:34 micwin 阅读( ...) 评论( ...)   编辑 收藏

转载于:https://www.cnblogs.com/chinanetwind/articles/9459504.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值