代码性能规范

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.1 SQL书写规范及性能优化

1. 提高语句共享性,抽象中公用方法静态页面代码和后台业务类代码行数控制2000行内

2. SQL语句便写完开发人员必须在PL/SQL上验证执行效率,执行时间过长的语句禁止写入程序代码中

3. 项目中sql全部大写,避免重编译

4. 不需要排序的时候尽量避免使用隐含排序:distinct、union

5. 如果不需要排重或者两者根本就没有交集,那么用unionall代替union

6. 选择条数最少的表做为连接查询的基表,三表交叉时,选择中间表作为基表

7. 能过滤掉最大条数的条件放在最后面

8. 针对线损系统中的运行数据禁止使用select*

9. 一个可以通过连接查询实现的尽量不要拆分成多个sql分步执行

10. 用where或者having都能实现的,用where代替having

11. 在嵌套子查询的时候用exist代替in

12. 在用in查询的语句中,如果in的范围不确定或者确定超过1000就不能使用in

13. 通过表连接或者exist都能实现的,用表连接代替exist

14. 查询时按照数据库表字段原有类型查询(数字转为char查询)

15. 嵌套子查询尽量不要超过3层

16. 大型表避免not equals的查询

17. 大型表避免使用null作为查询条件

18. 大型表like模糊查询时避免%在模糊条件的最前面

19. 用exist或者distinct都能实现的优先考虑使用exist

1.2 索引与性能优化

1. 选择可选性最高的字段创建索引

2. 不要轻易在字段前面增加函数或者将字段嵌入到表达式中,导致索引无法使用

3. 尽量少使用函数索引

4. 约束条件字段比较固定,则优先考虑使用复合索引

5. 复合索引的前缀性,即sql语句中,只有将复合索引的第一个字段作为约束条件,该复合索引才会启用。

6. 按可选性高低进行复合索引字段的排序,

7. 如果条件设计的字段不固定,组合比较灵活,则分别为各个字段建立索引

8. 尽量通过被驱动表的链接字段上的索引,访问被驱动表

9. 如果被驱动表中还有其他限制性条件,可以创建复合索引

10. 索引是从数据库中获取数据的高效方式之一,很多数据库性能问题都可以采用索引技术得到解决。

11. 使用索引可以缩短查询语句的执行时间,提高系统的执行效率,但是要避免过度索引的情况出现,尽量控制一个表的索引数量小于五个。

12. 不要创建实际用不上的索引,如果索引不能提高任何应用中的查询速度或者索引没有被应用使用,则要把它删除。

13. 主键索引在创建的时候一定要明确指定其名称,不能让系统默认建立主键索引。

14. 不要在有很多字符的大型字段上创建索引,这样的索引会占用过多的存储空间。

15. 记录数少的表保留有主键索引即可,不必再去创建其它索引,即使对该表进行全表扫描,效率也很高。

16. 当创建索引耗时过长时,可以考虑并行创建索引。

17. 考虑创建具有NOLOGGING的索引。

18. 在两个或更多的字段上创建的索引被称作复合索引。复合索引的第一字段称为前导字段(Leading Column)。建议复合索引按字段可选性(值的多少)的由高到低进行排列,因为字段值可选性越强,定位的记录也就越少,查询效率会越高。

19. 经常被查询的字段应作为复合索引的前导字段,例如对一个字段多次执行查询,则该字段应该是复合索引中的前导字段。

20. 如果对复合索引中的字段多次执行单独的查询时,应为该字段创建单独的索引。2 程序编写优化策略

2.1 内存管理优化

1. 要在对象使用完后进行了及时释放

2. 不要使用finalize 函数回收资源

3. 程序中数组类型是否显式申请空间,申请空间是否合理;

4. 要对共享变量设置为静态变量

5. 要采用了对象池技术来避免频繁的垃圾回收

6. 避免提前创建对象

7. 内存参数调优

2.2 程序表达式优化

1. 对不可覆盖的方法或不可继承的类加final

2. 高并发时采用线程同步

3. 不要采用循环进行数组拷贝

4. 避免在循环内调用方法

5. 在循环体内不要创建了对象

6. 多重循环中,复杂逻辑的循环在外,简单逻辑循环在内

7. 不要在循环体内使用了try/catch

8. 不要在循环中使用了length()

2.3 Java核心类性能优化

1. ArrayList显式申请空间时需进行优化

2. 合理使用了String 类,字符串相加、串联时要采用StringBuffer

3. 合理使用了toCharArray()

4. 合理的把字符串转换为数字

2.4 系统I/O类优化

1. 使用了系统缓冲流

2. 使用了压缩流提高系统性能

3. 数据格式化优化

4. 获取文件信息优化

2.5 类与接口优化

1. 避免在构造器中初始化其他的类

2. 不要给构造器添加返回值

3. 避免在构造器中对静态变量赋值

4. 不要在构造器中创建类实例

2.6 JSP与servlet性能优化

1. 优化jspInit()

2. 采用out对象中的print()方法代替println()方法

3. 采用ServletOutputStream 对象代替JSPWriter

4. 采用适当的值初始化out对象缓冲区的大小

相关文档
最新文档