更新业务表的效率

zaiai2003 2013-08-20 12:00:59
我有一个业务表 主要是下述字段(医院的业务)
开单科室编码A 执行科室编码B 收费项目C 收费类别D 金额E 开单比例M 执行比例N

每月的数据大约有50~100万,主要的操作是根据
字段 A B C D 的任意组合来更新M N
例如:开单科室编码= '334322' 并且 收费类别以'21'开头,设置开单比例为0.112


目前效率瓶颈主要是这个多次更新,每次更新50万条记录,由于业务表每月累计,所以这个表的数据大约几千万条,越来越多,越来越慢?


如何办?

...全文
103 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zaiai2003 2013-08-21
  • 打赏
  • 举报
回复
这四个条件可能任意组合,所以感觉索引也作用不大。分区表,也许是一个好的办法。有没有类似的需求?
Shawn 2013-08-20
  • 打赏
  • 举报
回复
--#1.分区表,是否合适楼主的业务 --#2.开单比例M,执行比例N,两列是否可用计算列 --#3.每月更新50W,datetime字段需要加上索引,且更新时加上时间条件限制。或者,每次更新前,想办法得到主键的更新范围,然后在主键范围内更新,会最快:update tb set field=1 where id between 200000 and 700000 --#4.及时归档历史数据到历史表
發糞塗牆 2013-08-20
  • 打赏
  • 举报
回复
2005及以上版本可以考虑按月分区,然后在时间列加上索引,这样保证每个月的数据量较为平均
wangyx_good 2013-08-20
  • 打赏
  • 举报
回复
不知道设置个增量能不能行得通啊
KeepSayingNo 2013-08-20
  • 打赏
  • 举报
回复
1、一个表上千万条不算多,你这个业务还是采用按年分表存储 2、在ABCD四个字段上建立聚族索引 3、写个JOB在夜间,也就是非插入时段进行M和N的更新

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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