修改别人程序发现的问题

一、对于年份的处理,因为考虑到年的处理和运算,单写一个获取年的类,即动态的得到需要的表名称,库名称等等

      public static String  getTable(String table ,Date date) {

             String newtable = "";

             SimpleDateFormat sdf = new SimpleDateFormat("yyyy");

             newtable = table +sdf.format(date);

             return newtable ;

       }

二、根据既定的业务需求,给出不同的解决方案

      1、给出需求的时候先考虑可以解决的方案而不是过早的否定我们做的大部分是工程类的东西,工程类的东西需要的实际的结果或者是结论来证明理论。所以我们需要不断的去试,不断的去检验每个方案,最终确定一个相对最优化的方案。

       2、在节省数据库资源消耗的前提下,一般的解决是放在程序中,或者说是外部内存的运行处理,比如说energy2014表中的统计能量,因为我们需求统计,但是频繁的统计并且更新数据是很消耗资源的(update 数据库时候先需要找到该条记录<这个也是很消耗时间的>,而每一个update又是一个事务,这个事务的执行是不能批量执行的)。这会影响我们的效率和资源的利用

       3、每个人的出发点是不同的,我的出发点是数据库,你的出发点是程序,而他的出发点可能是内存,等等,因为出发点不同考虑问题的角度不同,给出的解决方案不同,但是最终我们的目的是相同的那就是以更好的更优化的程序来呈现。

三、数据库连接和sql语句

      1、数据库连接是越少越好,用完连接关闭是必须的,但是如果是嵌套sql交互<比如 两层for循环,内外层都去连接数据库去执行操作,这对一个数据库来说是要命的,会瞬间占用很大的cpu ,当你的程序是频繁的操作时候,那么数据库会保持长时间占用cpu >

      2、数据库的操作,尽量不将数据库计算的结果存储下来<计算机的高效就是来自他的计算能力,而不是逻辑处理能力>,当然这是建立在有没有必要的前提下说的,但是不是特殊操作或者强制性的操作,还是不推荐大量更新数据库数据

       3、在不影响需求结果的前提下,转换变量之间的逻辑关系,将需求变量之间的逻辑关系转换为主键或者有索引列的关系。

       4、插入操作尽量使用批量插入,基于单表的操作使用 //addBatch(); executeBatch();基于多表的操作使用手动制造批量插入的insert 带着多个value 值

       5、如果非要使用二层循环来搞定查询结果那么尽量的使用一次性查找出各自的东西放到内存中在外部“内存中” 为各自的表之间建立关系,如Map等 相当于在外部建立索引关系图

        

你可能感兴趣的:(修改别人程序发现的问题)