sql server 数据库中用久了一个表中的数据多了怎么处理。年度处理?
发布网友
发布时间:2022-05-20 16:24
我来回答
共5个回答
热心网友
时间:2023-11-01 03:03
有多种方案可以处理.
例如 表名 sale_tab
其中包含 2000年到 2013年的 13年的数据。
有个日期列 sale_date
1. 分拆多个表. sale_tab_2000, sale_tab_2001 , sale_tab_2002 ...... sale_tab_2012
当年的数据, 还是存储在 sale_tab 里面。
等 2014年了, 再创建 sale_tab_2013 表。
每个表存储 指定年份的数据。
至于查询, 可以创建一个 “分区视图” 的东西, 来进行查询。
关于分区视图的例子, 可参考
http://hi.baidu.com/wangqing999/item/058762579513ce9e8d12ed2a
2. 使用分区表 ( 注: Express 版本的 SQL Server 好像是不支持 分区表的 )
创建分区函数, 按照年 进行分区处理。
下面是一个 按月分区的例子代码:
创建分区函数
CREATE PARTITION FUNCTION sale_date_part_func(DATETIME)
AS RANGE RIGHT FOR VALUES(
CONVERT(DATETIME, '2010-01-01 00:00:00', 120),
CONVERT(DATETIME, '2010-02-01 00:00:00', 120),
CONVERT(DATETIME, '2010-03-01 00:00:00', 120),
CONVERT(DATETIME, '2010-04-01 00:00:00', 120),
CONVERT(DATETIME, '2010-05-01 00:00:00', 120),
CONVERT(DATETIME, '2010-06-01 00:00:00', 120),
CONVERT(DATETIME, '2010-07-01 00:00:00', 120),
CONVERT(DATETIME, '2010-08-01 00:00:00', 120),
CONVERT(DATETIME, '2010-09-01 00:00:00', 120)
);
go
创建分区架构(Schema)
CREATE PARTITION SCHEME sale_date_part_sche
AS PARTITION sale_date_part_func
TO (
[PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY]
);
go
创建分区表
CREATE TABLE sale_data (
sale_date DATETIME NOT NULL ,
sale_item VARCHAR(2) NOT NULL ,
sale_money DECIMAL(10,2) NOT NULL
) ON sale_date_part_sche(sale_date);
go
热心网友
时间:2023-11-01 03:03
如果旧的资料不需要使用了,可以转入一个历史档来保存,如果还需要使用,也可以用sql server的分区功能来处理。追问分区是怎么实现的呢?
热心网友
时间:2023-11-01 03:04
如果是年度数据,可以进行表分区按年度进行分;分成多个表
热心网友
时间:2023-11-01 03:04
表分区------把表用时间间隔成几个平行表
热心网友
时间:2023-11-01 03:05
按年份或月份,调用存储过程生成对应的新表