针对【sql server 中数据量日益增多】的程序开发思路探讨!

敦厚的曹操 2012-04-03 11:08:46
各位同行,我在开发程序时,经常遇到客户的数据由于累积了几年的数据,一个表中的数据记录已经超过了千万条,搜索和查询会很慢,后来,我采取的方法是:

1、在数据库中建一个数据年表,比如:原来的表名是:Sj(只保存当年和去年的数据),那么,我就建一个表名是Sj_Year(去年之前的数据)。
2、结构全部相同,每年1月1日,我会让系统初始化,把前年之前的数据导入到Sj_Year中。
3、当查询时,如果日期在这2年内,就查Sj表,如果是去年以前的数据,就查Sj_Year表,如果在之间,就2个表一块查。虽然麻烦,但客户基本上都查的是这2年内的,因此,速度能够保证。

想听听各位搞开发的同行,你们一般都是什么方法,互相借鉴一下。
...全文
169 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
敦厚的曹操 2012-04-05
  • 打赏
  • 举报
回复
谢谢了,我打算偿试一下!
xuzuning 2012-04-04
  • 打赏
  • 举报
回复
1、是,存在
2、是一个表
3、是
4、能,你还可以随时改变分区规则和类型
5、不是,从用户角度看,操纵分区表与普通表没有任何区别
敦厚的曹操 2012-04-04
  • 打赏
  • 举报
回复
楼上给的方案很牛呀,我看了看相关的文章,很兴奋:http://wenku.baidu.com/view/df7f92ce05087632311212cc.html 【很详细】
看后,有以下几个问题,希望楼上的sql高手中的高手给解答一下:
1、创建分区表的信息是不是保存在数据库文件中,如果数据库mdf附加到其他机器上,分区表是否存在?
2、建分区表后,是不是在企业管理器中查看,还是这一个表,而不是分区后的好几个表?
3、分区表建好后,我查询表数据,是不是不考虑分区,只要对表(跟平常一样)查询就行了:例如:select * from aaa where rq>='2010-10-02' and rq<='2012-01-01'?
4、已经有表了,而且有数据,是不是表能建立分区表?
5、是不是分区表建好后,把表加进来,不是针对某一个表建立分区表?

以上5个问题,我通过让楼主回答是不是,以简化楼主的回答时间,谢谢了!
xuzuning 2012-04-04
  • 打赏
  • 举报
回复
既然你使用的是 sql server 那么为什么不考虑使用分区表呢?
至少他可以让你:
1、不必人工创建历史数据表
2、简化你的查询操作
net_steven 2012-04-04
  • 打赏
  • 举报
回复
征询业务部门和管理层的意见,我是保留最近3年的数据,历史数据的备份我是将整个数据库备份,连带应用系统一道备份,因为其后结构可能会发生变化,最新的应用访问历史库不一定都行。按规律而言,访问3年前数据的需求概率是极低的,至今尚未碰到过。
忘了说了,后台是SQL,备份整个数据库,比切割单个表容易多了。
dfwxj 2012-04-03
  • 打赏
  • 举报
回复
改变一个思路就是分段,不一定就是一个年度,可以是两年或三年,甚至是某一段时间
dfwxj 2012-04-03
  • 打赏
  • 举报
回复
分年度设计,进入系统时需要选择数据年度,根据不同的年度打开对应的数据库。

年末要有年度结转操作

如果要查询跨年度数据,请分开查询。
十豆三 2012-04-03
  • 打赏
  • 举报
回复
基本也是这样做,建议年底结转一下,当前数据表存放1-3年的数据,历史数据查询时给出选择。
另外对表建立相应的索引,来提高查询速度。

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧