`

Java代码优化与sql语句优化

阅读更多

代码优化:

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

分享到:
评论

相关推荐

    JAVA-SQL语句优化.doc

    但是,如果在SQL语句的where子句中写的SQL代码不合理,就会造成优化器删去索引而使用全表扫描,一 般就这种SQL语句就是所谓的劣质SQL语句。在编写SQL语句时我们应清楚优化器根据何种原则来使 用索引,这有助于写出高...

    SQL语句优化数据库java

    这是我个人整理,算是比较齐全,大家写SQL代码如果能按这种格式写,那么整个系统性能将会大大提高。。

    动态sql语句 操作更灵活更严谨.zip

    在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让开发者构建更灵活、高效的数据库操作语句,因为他们...

    用mybatis 的sql语句操作mongodb的简易方案.zip

    在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让开发者构建更灵活、高效的数据库操作语句,因为他们...

    这个库是生成动态 SQL 语句的框架.zip

    在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让开发者构建更灵活、高效的数据库操作语句,因为他们...

    10种Java开发者编写SQL语句时常见错误

    但是,当Java开发人员编写SQL语句时,一切都变得不同了。SQL是一种说明式语言,与面向对象思想和命令式思想无关。在SQL语言中,查询非常容易表达。但它也不是那么容易以最佳或最正确地方式编写出来。开发人员不仅...

    一款IDEA插件,可以实现生成Mysql的动态SQL,适合新手使用mybatis来写项目,加快项目落地周期.zip

    在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让开发者构建更灵活、高效的数据库操作语句,因为他们...

    mybatis-generate优化,自动生成动态sql.zip

    在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让开发者构建更灵活、高效的数据库操作语句,因为他们...

    sql2entity:MySQL转换成Java实体类的小公举

    一款开源SQL语句转换成Java 实体类的小工具 需求起源 因为公司之前使用JPA,先写实体类再生产数据库建表语句,这样会有一个问题,数据建表语句都是没有注释的,对于新来的同事非常不友好,同时在开发中需要看字段...

    mybatis语法增强框架, 综合了mybatis plus, danymic sql, jpa等框架特性和优点生成代码.zip

    在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让开发者构建更灵活、高效的数据库操作语句,因为他们...

    MyBatis Dynamic SQL 动态sql案例.zip

    在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让开发者构建更灵活、高效的数据库操作语句,因为他们...

    动态SQL插件,提供mybatis xml SQL动态脚本添加、删除接口,达到不用重启项目,通过接口动态变更SQL的效果.zip

    在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让开发者构建更灵活、高效的数据库操作语句,因为他们...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    springboot集成mybatis动态sql.zip

    在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让开发者构建更灵活、高效的数据库操作语句,因为他们...

    Mybatis动态SQL高级映射.zip

    在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让开发者构建更灵活、高效的数据库操作语句,因为他们...

    基于CodeMirror5实现的mybatis+sql提示扩展功能,主要是用于在线设计开发场景中的动态sql部分.zip

    在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让开发者构建更灵活、高效的数据库操作语句,因为他们...

    牛客网数据库SQL实战题目汇总.zip

    在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让开发者构建更灵活、高效的数据库操作语句,因为他们...

    mybatis动态SQL练习 动态查询 动态修改.zip

    在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让开发者构建更灵活、高效的数据库操作语句,因为他们...

    动态代理模拟实现MybatisPlus SQL注入的功能.zip

    在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让开发者构建更灵活、高效的数据库操作语句,因为他们...

    mybatis框架 更改ems系统,使用动态sql等.zip

    在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让开发者构建更灵活、高效的数据库操作语句,因为他们...

Global site tag (gtag.js) - Google Analytics