代码优化:
1.对于一修修饰符的使用:该使用final、private、protected等的应当加上,编辑器有内联机制,不但能提升性能也大大提升代码的可读性
2.对于变量的使用:尽量使用局部变量,局部变量保存在栈中,速度较快,像静态变量、成员变量都在堆中创建,速度较慢
3.对于一些jdk内置的类的使用:对于常字符串应使用String,比使用StringBuffer节省一半的空间与时间,但对于会动态改变的字符串,应该使用StringBuilder,在不需要同步的情况下,应当慎用StringBuffer;在不需要同步的情况下,不要使用Vector、HashTable
4.对于for循环的优化:不要在for中重复初始化变量,不要在for中使用try{}catch(Exception ex),这个代码块需要比较大的开销
5.对于一些IO操作,应该多使用缓存,使用java.nio的包很多类都是使用缓存的
6.对于一些乖除法运算,使用移位方式可大大提高性能
7.对于一些查询数据的操作,尽量使用延迟加载,能使用缓存的考虑使用缓存
SQL优化:
1.查询的结果集尽量不要使用*,对于一些操作,比如四舍五入等应使用内置函数,内置函数比复杂的sql高效得多
2.对于Form后的Join表,最后一个表应该是记录数最少的表,如果是三个表以上,存在中间表,应当把中间表作为基础表,表应当使用别名,结果列应加上列名,可加快sql的解析速度与避免列冲突的发生
3.where条件中,由于顺序是由右到左,能过滤到最大记录数的条件应当放在条件的最右边
4.如果能where条件中过滤的,就不要在having进行过滤,因为having条件,要对结果进行排序、统计等操作,性能开销较大
5.避免使用like,如果一定要使用,而且表的存储引擎是Myisam的话,尽可能给这个字段加上full-text索引,避免使用in、not in,可以的话使用exist、not exist代替,在使用union的时候,如果不会出现重复记录就应该使用union all这样就可以避免对结果进行排序操作
6.在条件中与order by中的字段,要避免使用一些会让索引失效的表达式,有如下情况会使索引失效:对字段进行计算,如:id+1=3,对字段使用函数,如concat(id,"12"),没有严格使用引号,如name是varchar类型,在表达时name=12就会导致索引失效,应该这样写:name='12',如果对字段进行like,%放在首位会导致索引失效,如果是组合索引,如A+B+C,如果A=''索引起作用,但非第一个字段就会失效,如B='',索引列不能存null值,会导致失效,避免使用<> =!、in 、not in 、exist、not exist,这些表达式会让索引失效
7.索引存储引擎有四种:b-tree、hash、full-text、r-tree,b-tree是最常用的,myisam和innodb都支持,hash比b-tree高效,只有memory和ndb cluster支持,而且操作也比较有限,只支持<=>、in操作,full-text只有char、varchar、text,索引类型有normal、unique、full-text三种