SqlServer数据库表数据量过大时按照年份分表存储时如何分页、统计汇总。

qq_27425331 2017-04-18 11:18:40
表RecordTable的数据量会随着时间的推移而产生过亿的数据,对于后期的增删改查的执行有致命的影响,现在的解决方案是将RecordTable进行横向切分,就是分别通过RecordTable201703、RecordTable201704、RecordTable201705这样的形式分月存储数据,但他们的表字段结构是一样的,只是表名不一样。这样做确实可以解决部分问题,但是对于统计汇总、分页查询、联结查询、排序查询的时候,会有很大的麻烦,请问各位有什么好的办法。
...全文
2071 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
丹心石 2018-03-13
  • 打赏
  • 举报
回复
分表的话,可以用存储过程来根据传入时间来做表联合查询。如果用视图的话,首次加载很大的数据是非常慢的。。。比如上亿条记录
丹心石 2018-03-13
  • 打赏
  • 举报
回复
oracle中的表分区可以实现横向纵向分割,但这里问的是sql server 的问题,sql server中也有表分区,但是不能像oracle 那样使用方便
xiaoxiangqing 2017-04-19
  • 打赏
  • 举报
回复
可以用一个视图合并起来,查询的时候,只用查询视图
qq_27425331 2017-04-19
  • 打赏
  • 举报
回复
分区的意思就是说把这张表的多个字段根据其数据量的大小再次进行分割,这相当于是一个纵向的切割。比如用户表中有存储用户基本信息的字段,比如:姓名、性别、年龄、身高等等,还有存储用户账户信息的字段,比如:用户名、登录密码、支付密码等等,将这两类字段分为两个表存储,然后再给这两个表建立一个关系,您是这个意思吗?
二月十六 2017-04-18
  • 打赏
  • 举报
回复
不分表,试试用表分区技术实现,对外是一个表,实际按时间区分存储到多个物理文件
吉普赛的歌 2017-04-18
  • 打赏
  • 举报
回复
你这些数据, 不可能是全部都要吧? 正常来说, 大表应该分割为 : 当前表 近期表 历史表 三个表 或 当前表 历史表 二个表 当前表的数据按数据产生的数量只保留 1周或1个月以内的数据 近期表保留 1 个月以前~6个月内的数据。 历史表保留 6 个月以上的数据。 如果历史表再大, 一年以前(根据需要)可以放到归档库不再处理。 当然, 具体如何保留那要根据你的需要了。 历史表可以做分区处理。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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