zoukankan      html  css  js  c++  java
  • java开发经验分享(二)

    二、 数据库

    1. SQL语句中保留字、函数名要大写,表明、字段名全部小写

    如:SELECT vc_name,vc_sex,i_age FROM user WHERE i_id = 100 AND i_type = 2

    2. 使用标准SQL语句,防止数据库兼容问题

    3. 循环里面(包括循环调用方法内)避免过多操作数据库

    4. 选择最有效率的表名顺序

    ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表

    5. 注意WHERE子句中的连接顺序

    ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾

    6. SELECT子句中避免使用*

    ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间

    7. 减少访问数据库的次数,尽量批量操作数据库,如批量删除

    ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等

    8. 避免在WHERE子句中使用in,not  in,or 或者having

    可以使用 exist 和not exist代替 in和not in

    9. 用WHERE子句替换HAVING子句

    避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销。

    10. 用好数据库事务

    事务是指作为单个逻辑工作单元执行的一系列操作。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。

    Transaction ts = null;

    try{

    ts = new Transaction(appId);

    boolean bl = ts.execute(sql);

    if(bl){

    bl = ts.commit();

    }

    if(!bl){

    throw new Exception();

    }

    }catch(Exception e){

    if(ts!=null)

    ts.roolback();

    bl = false;

    }

    11. 注意SQL执行效率,考虑单表记录10W以上的运行效果

    setup中,日志显示级别为警告以上时,执行时间超过300ms的SQL语句,会在日志中输出warning

    12. 索引

    参考:数据库性能优化

  • 相关阅读:
    分享一个本人打造的公众号吸粉、推广方案。
    iOS开发简记(8):数据持久化
    iOS开发简记(7):网络请求模块
    iOS开发简记(6):storyboard的使用
    iOS开发简记(5):设备唯一标识与全局变量
    iOS开发简记(4):录音AVAudioRecorder
    iOS开发简记(3):tips提示
    iOS开发简记(2):自定义tabbar
    spring+mybatis+springMVC框架配置多数据源
    Docker常用操作
  • 原文地址:https://www.cnblogs.com/xhp956614463/p/5342251.html
Copyright © 2011-2022 走看看