sqlserver2008怎么实现自动分区表

sqlserver2008怎么实现自动分区表,第1张

/第一步:创建分区函数/

Create partition function Part_func_Bag(varchar(20)) as range right

/正式区间

for values(N'01100923909760', N'01100936207030', N'6311001806524',N'92451400060101');/for values(N'91701311710807', N'07201280707101', N'8011011089884',N'80241001430714');goselect from Bag where BagCode in(N'91701311710807', N'07201280707101', N'8011011089884',N'80241001430714')

/第二步:创建文件组和文件/

alter database ZXAutoCode add filegroup [Bag_1]; alter database ZXAutoCode add filegroup [Bag_2];alter database ZXAutoCode add filegroup [Bag_3];alter database ZXAutoCode add filegroup [Bag_4];goalter database ZXAutoCode add file (name = Bag1_data,filename = 'E:\MSSQL\TESTDATA\Bag1_datandf',size = 3MB) to filegroup [Bag_1];alter database ZXAutoCode add file (name = Bag2_data,filename = 'E:\MSSQL\TESTDATA\Bag2_datandf',size = 3MB) to filegroup [Bag_2];alter database ZXAutoCode add file (name = Bag3_data,filename = 'E:\MSSQL\TESTDATA\Bag3_datandf',size = 3MB) to filegroup [Bag_3]; alter database ZXAutoCode add file (name = Bag4_data,filename = 'E:\MSSQL\TESTDATA\Bag4_datandf',size = 3MB) to filegroup [Bag_4]; go

/第三步:创建分区方案并关联到分区函数/

Create partition scheme Part_func_Bag_scheme as partition Part_func_Bag to ([Bag_1],[Bag_2],[Bag_3],[Bag_4],[Primary]); go

/第四步 重建索引(删除聚集索引以及需要分区字段的索引后重建该类索引,表被按分区值将分配到各文件组。数据在这一步开始转移。)/

EXEC sp_helpindex N'Bag' --查看orders中使用的索引 drop index idx_cl_od on Bag;gocreate clustered index idx_cl_od on Bag(bagcode) on Part_func_Bag_scheme(bagcode); go

查看表分区,以前在企业版数据库切换到标准版时,使用过

企业版标准版数据库切换

请查看这篇文章中,查看数据库是否存在分区表的方法

如有疑问,及时沟通

请采纳!

只有这两种情况吗 你可以从后面截取判断啊

截后六位 判断 是人民币 还是 万美元不就好了吗

截完之后 就可以分别截取判断了啊

举个栗子:

jiequreneirong=substr(column,1,length(column)-6)

case when jiequneirong='人民币' then substr(column,1,length(column)-6) end as num

, case when jiequneirong='人民币' then substr(column,length(column)-6,6) end as type

我只是给个思路哈

create table TB (ID int,NUM nvarchar(20)) 

insert into TB values(1,'2;3;')

insert into TB  values(2,'4;5;')

insert into TB  values(3,'6;7;')

第一个:

select  from tb

where NUM like '2%'

结果:

1    2;3;

第二个:

select  from tb

where SUBSTRING(NUM,1,1)=2

结果:

1    2;3;

ql代码

#这里使用HASH表分区,mysql会根据HASH字段来自动分配数据到不同的表分区,这种情况适用于没有表分区规则但是有需要分表来进行查询优化的情况。这里根据id字段hash规则创建2个表分区

CREATE TABLE `creater_bak` (

`id` int(11) NOT NULL,

`name` varchar(100) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

PARTITION BY HASH(id) PARTITIONS 2

创建完成后开始导入原表数据:

Sql代码

insert into creater_bak select from creater;

导入以后的新表数据就是分布在不同的2个表分区中了。

如果数据量非常大,觉得预设的表分区数量太少,那么可以新增表分区,mysql会自动重新分配:

Sql代码

#这里新增8个表分区,加上新建表时候的2个,一共10个表分区了

ALTER TABLE `creater_bak` ADD PARTITION PA

以上就是关于sqlserver2008怎么实现自动分区表全部的内容,包括:sqlserver2008怎么实现自动分区表、sql查询是否已分区有、在数据库的表中写一个sql把已有字段对应的值 拆分为多个字段等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9861182.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存