ORACLE10SQLServer2005
最近学习Oracle中,在其有hash表分区功能,就在想sql server 有类似分区吗,查了一些资料,发现没有介绍,在2005中目前只支持列表和范围分区。 以前只知道Sql Server有hash索引,本文就在Sql Server中实现Oracle里的hash表分区。在oracle 10g的hash分区保持分区数据的均匀,分的区个数是2的倍数分区才可以实现。 前段时间做了一个试验,实现了在sql server 2005的分区并保证了在hash分区中数据的分布均匀。 现在我们看具体实例: Hash分区:将表数据均匀的分成4个区。 建立分区函数:数据如何分区(逻辑设计)
注意:我们这里使用的int型数据,因为hash函数是checksum(id),这里根据int的最大长度进行分区,我们使用2,147,483,648/2=1073741824 这里:Range left 意思: <= Range right 意思: < 创建分区方案:分区数据如何物理存放(逻辑设计)
这里的all TO ([PRIMARY]) 意思是将分区数据将存储于主文件组中 建立分区表:
注意:1,这里我们使用了计算列的做为分区列,在SQL server 2005中,分区列如果是计算列,必须PERSISTED持久化 2,我们这里使用了checksum(列)这个哈希函数,该函数用来计算id的hash值,这个函数同时可以用来建立hash索引 插入1万条测试数据:
查看数据的分布分区情况:
|