Java代码优化与sql语句优化

本文提供了多种代码优化建议,包括合理使用修饰符、局部变量、内置类等,并针对for循环、IO操作、数学运算等方面给出具体策略。同时,还详细介绍了SQL优化方法,如精简查询结果集、优化Join表顺序、合理使用索引等。
摘要由CSDN通过智能技术生成

代码优化:

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三种

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值