项目经历——总结经验
首先声明:一次公司项目开发,总结遇到的问题和所做的处理方式
一、需求方面的理解
最初公司在产品需求方面,进行了多次会议,让开发理解项目的使用流程、大体的了解每个功能进行的功能。对于需求理解方面,要花一定的时间去了解,不要因为是产品设计的功能而不当做事情,因为这个在后面的对开发方面会产生很大的影响。在什么地方不理解,要和产品进行沟通,这样有利于后面开发的时候,不会遇到各种各样的问题。当然问题肯定还是有的,毕竟不可能考虑的面面俱到,肯定会存在比较棘手的问题。比如因为各自的模块不同,不能完全理解其他人的逻辑,当自己开发的模块和别人的模块产生关联的时候,需要知道其他人所开发的表结构的模块。
二、功能整理
对于开发的功能:
1、先理清思路,然后建表的时候,每个字段要保持一致性,一个字段存储的功能一定;
2、然后在开发功能的时候,理清需要开发这个功能的基本步骤,然后进行开发,最后再加入一些必要的校验。
3、一定要清楚,这个功能需要涉及哪几张表,存不存在遗漏的表。
4、功能修改之前,一定要先讨论,再修改,不然会做很多无用过。
5、对其他开发的模块要有一定的了解,因为你开发的是整体的功能,在做功能修改的时候,很有可能会涉及到之前开发过的接口,如果功能一直,可以进行复用,如果不能复用,可以复制过来,然后进行修改。
三、代码实现
逻辑理清之后,就是一些业务代码的实现,如果是做web开发的都清楚,就行理清逻辑之后,对逻辑进行实现。如果实现,看个人对代码的理解,有人喜欢能用一条sql写出来的就不用多条sql写出来。有些则是通过多条sql进行多次调用拼接数据实现。没有固定的实现方式,但是理清楚逻辑很重要。
四、代码优化
代码优化主要分为:业务代码中整合的sql太多,造成数据访问慢。类似于最不应该出现的:循环调用SQL。或任何操作都是LEFT JOIN而不进行优化,我们都知道通过JOIN的操作的原理是笛卡尔积,如果关联太多造成数据量太大,不如采用多条sql进行使用。一个是通过两条sql查询两张表中的1000条的数据,一个是通过一张中从1000*1000中查询出需要的数据。两张的数据量大小有待参考。但是数据库的执行速度本身也是比较快的,我只是举个例子,因为我没有把数据库建立连接和关闭连接的时间算上。我举这个例子主要是想说,要保证查询的数据集不要过多。还有就是索引的建立。
我个人理解的比较浅显的优化方式是:1.降低数据集:代码SQL拆分或删减数据集 2.建立索引:优化代码,根据筛选看建立组合索引还是单独索引;
SQL优化的策略
1.根据SQL的条件 判断建立 单列索引或 组合索引
- 单列索引
- 组合索引(遵从 最左前缀的原则)
- 最左前缀 根据B+树索引
- 最左前缀匹配原则,非常重要的原则mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配 https://tech.meituan.com/2014/06/30/mysql-index.html
- Java的DateTime类型 DATE_FORMAT(t2.fault_occur_time,'%Y-%m-%d %T') aliases,来获取数据类型
2.SQL优化 减少JOIN的关联的数据,可以在From中增加查询条件,减少查询时间
3.添加关联索引 需要对需要查找的对象建立索引,(注意::保持编码类型一致,不然无法使用索引)