业务逻辑写在SQL里,还是在JAVA文件中处理
比如对表进行复杂的金额计算(以交易金额*扣率为例),是在sql中直接搞定:
selec 交易金额*扣率 from trans
还是直接
s
elec 交易金额 from trans
通过JAVA 的list获取结果集,在list进行 交易金额*扣率 好呢?
望赐教
------最佳解决方案--------------------楼主要注意程序要有灵活性,后期维护也很重要..
1.灵活性是如果哪天用户说还对其值减去1.或者怎么样的功能呢?你如果没法改SQL了,改怎么办?也就是改SQL达不到用户需求怎么办?那么如果要在代码中实现,为什么不把所以逻辑都写在代码中?
2.后期维护,其实和上面差不多..我们公司里面很多时候事,DAO里面就对表简单的增删改查功能,然后逻辑都写在代码中,如果代码能做到!这样我就也可以重用些sql.不要一个功能就一个sql语句!!!
希望能帮到你!
------其他解决方案--------------------不建议写在数据库中
如果你只是想显示出这些东西
那你只需要
select 金额,扣率 from table
然后不要去管它
显示的时候比如说你需要显示总金额什么的
你就在显示的时候让页面自己去计算金额×扣率
这样数据库和服务器就压力小了
要是如果执行的中间计算
那还是建议在代码中实现
因为代码的灵活性比较高
你都说了是复杂的计算了
放在数据库中
那岂不是要难为数据库了嘛哈哈
祝你成功
------其他解决方案--------------------还是建议你写在程序里
------其他解决方案--------------------写在java文件里面比较好,sql只进行简单的数据库操作
------其他解决方案--------------------写在java程序里面啦。
------其他解决方案--------------------衡量系统负载在服务器还是在数据.均衡配比.
但一般认为由服务器来处理这些计算速度上不会比数据库慢.
------其他解决方案--------------------
像楼主这样的情况建议在数据库表中间再增加一个冗余字段来存储"交易金额*扣率"的结果,
在Insert数据的时候就将"交易金额*扣率"的结果插入数据库,而不在读取的时候来做逻辑计算.
在设计模式中这种冗余是允许的,可以提高系统的运行效率,也使数据库表结构更加清晰.
------其他解决方案--------------------写在数据库比较好:
第一:运用起来比较方便;
其次:数据库端的操作不需要太多的服务器的性能消耗,相比能在处理优化。
------其他解决方案--------------------
看你什么数据库,
什么服务器;
用户多少人;
分布式方面怎样设计。
总之, 看情况吧……
------其他解决方案--------------------同时你要结合5#说的慎重考虑下才好
------其他解决方案--------------------数据库
------其他解决方案--------------------写在程序中好些。。。。个人推荐
------其他解决方案--------------------还是写在程序里好一点吧!
------其他解决方案--------------------在oracle 写SQL 写的话,会将SQL语句搞得非常长并且复杂~
要用到oracle的decode(或者case when then ……) 函数,参加逻辑。
目前就是不清楚,数据量很大的话(百万-千万级)
到底是在数据库中计算快,还是在代码中计算快。
------其他解决方案--------------------还有一个顾虑就是:
数据库中进行 交易金额*扣率 时,需要得到精确的计算结果并根据业务规定的精度进行四舍五入。
而在JAVA中 用double 不能精确地对数据表中的“交易金额”建模,需要使用BigDecimal 辅助计算精确结
果。
这样的话,在JAVA中用速度较慢的BigDecimal ,性能又觉得不好。
------其他解决方案--------------------- -# 啊又大牛 赐教?
------其他解决方案--------------------