另一张表BB 字段 aa bb cc
如何实现AA表的字段b(为整数型)中的数据 是BB表中的cc字段(为整数型)所有数据记录的总和(sum)!
要求做到BB表数据记录增加的同时AA表中字段b的记录值自动同步更新。
麻烦各位大虾指点下。。。。。。
9 个解决方案
#1
这个就用触发器把,建一个 insert 触发器就可以
#2
忘了说了 不用触发器 因为BB表是海量数据表 且不停的高频繁的在增加数据记录 如果用触发器效率和性能都跟不上吧
#3
还是得用触发器,每次插入数据的时候,只是把新插入的值累加到,a表的b字段,这样不久快了。
#4
对了 BB表海量数据,有多少呢?
#5
另外,在表上建立相应的索引,也能加快处理的速度
#6
这个,个人觉得没什么用呀!B表在高频更新,求的sum肯定一直在变动,就算此刻你看到了一个sum值,但下一刻马上又变了,那这个数据能起到什么作用。。。
#7
数据有上亿
取这个sum值肯定是有用的啊 数据是一个金额数据 需要不断获取这个数据的总金额
yupeigu的意思是建立索引和触发器?
取这个sum值肯定是有用的啊 数据是一个金额数据 需要不断获取这个数据的总金额
yupeigu的意思是建立索引和触发器?
#8
对的,触发器能实现你的需求,另外,索引能加快速度。
因为这种同步的需求,首先,不是跨越服务器的,一般跨越服务器的,可以考虑用数据库同步(异步)、镜像(同步)、日志传送(异步)等技术。
而你现在是在同一台服务器上,要同步2个表的数据,所以用触发器是最合适的,而且触发器本身的特性是,在同一个事务中,只要你的数据插入成功,那么另一个表的数据,也就是同步成功了,同样的,如果插入失败,报错,那么另一个表的数据也不会同步成功。
再有,就是效率的问题,如果每次都sum求和,而你的表里是上亿的数据,这个sum肯定是非常耗时的,所以这里采用的是,你插入1条数据,那么只要把这个插入的数据,通过update 表 set c = c + 插入的值
那么自然就加快了速度,而且不会出现并发的问题。
如果还想进一步加快速度,那么可以考虑,给A表建立索引,因为a表肯定记录也不会少,而且肯定是通过where条件来定义某一条记录,然后update ,这个时候通过索引,就能更快的找到这条记录,然后update
#9
非常感谢yupeigu的热心帮助,按你的方法做的 效果不错, 结贴。。。。。
#1
这个就用触发器把,建一个 insert 触发器就可以
#2
忘了说了 不用触发器 因为BB表是海量数据表 且不停的高频繁的在增加数据记录 如果用触发器效率和性能都跟不上吧
#3
还是得用触发器,每次插入数据的时候,只是把新插入的值累加到,a表的b字段,这样不久快了。
#4
对了 BB表海量数据,有多少呢?
#5
另外,在表上建立相应的索引,也能加快处理的速度
#6
这个,个人觉得没什么用呀!B表在高频更新,求的sum肯定一直在变动,就算此刻你看到了一个sum值,但下一刻马上又变了,那这个数据能起到什么作用。。。
#7
数据有上亿
取这个sum值肯定是有用的啊 数据是一个金额数据 需要不断获取这个数据的总金额
yupeigu的意思是建立索引和触发器?
取这个sum值肯定是有用的啊 数据是一个金额数据 需要不断获取这个数据的总金额
yupeigu的意思是建立索引和触发器?
#8
对的,触发器能实现你的需求,另外,索引能加快速度。
因为这种同步的需求,首先,不是跨越服务器的,一般跨越服务器的,可以考虑用数据库同步(异步)、镜像(同步)、日志传送(异步)等技术。
而你现在是在同一台服务器上,要同步2个表的数据,所以用触发器是最合适的,而且触发器本身的特性是,在同一个事务中,只要你的数据插入成功,那么另一个表的数据,也就是同步成功了,同样的,如果插入失败,报错,那么另一个表的数据也不会同步成功。
再有,就是效率的问题,如果每次都sum求和,而你的表里是上亿的数据,这个sum肯定是非常耗时的,所以这里采用的是,你插入1条数据,那么只要把这个插入的数据,通过update 表 set c = c + 插入的值
那么自然就加快了速度,而且不会出现并发的问题。
如果还想进一步加快速度,那么可以考虑,给A表建立索引,因为a表肯定记录也不会少,而且肯定是通过where条件来定义某一条记录,然后update ,这个时候通过索引,就能更快的找到这条记录,然后update
#9
非常感谢yupeigu的热心帮助,按你的方法做的 效果不错, 结贴。。。。。