• SQL代码检查


    1.使用 insert、select必须给出字段列表

       因为使用*代替所有的字段后,如果表结构发生变化,应用程序可能出现无法识别的情况。比如java的Struts2+spring+ibatis框架,sql语句在XML档配置,内容:
    <select id="id" parameterClass="java.util.HashMap" resultClass="TableClass">
          select * from t;
    </select>
    这个配置需要TableClass的属性与table的栏位完全相同(包括大小写),如果表结构变更,但是TableClass类没有同步的话,这个查询将出错。
    2. 同一SQL必须完全相同
        原因是在Oracle完全一样SQL语句可以实现共享,完全是指大小写、空格位置都必须一致。
    3. 避免隐形转换
       select field1,field2
            from t
       where param = to_nchar(:param)
       栏位param与参数param类型不一致时发生类型转换,这可能导致性能问题。
    4. 避免大小写转换 (与5类似)
    5. 避免对(索引)栏位使用函数
    比如很多场景需要使用日期查询
    select *
       from t
    where to_char(date, ‘yyyy/mm/dd’) BETWEEN ‘1999/01/01’ AND ‘2012/10/16’
    6. 避免使用前置的Like(%abc)模糊查询
        这将导致全表扫描,建议使用后置Like(abc%)模糊查询,或者搜索引擎。
    7. 当list大于20时,不要使用In list
    a in (:1,:2,:3,…,:n) --- n > 20
    8. 避免使用!=或<>操作符,这将导致全表扫描
    9. 避免在where子句中对字段进行函数操作,这将导致全表扫描
    select id from t where substring(name,1,3)='abc'; --name以abc开头的id
    10. 避免在where子句中的”=”左边进行函数、算术运算或其他表达式运算,否则将无法正确使用索引。
    11. 避免在where子句中对字段进行null值判断。
    select id from t where num is null;
    这将导致全表扫描

    更多内容请关注 http://www.cnblogs.com/fukajg/
  • 相关阅读:
    Bootstrap<基础十四> 按钮下拉菜单
    Bootstrap<基础十三> 按钮组
    Bootstrap <基础十二>下拉菜单(Dropdowns)
    Bootstrap<基础十一>字体图标(Glyphicons)
    Bootstrap<基础十> 响应式实用工具
    Bootstrap<基础九>辅助类
    Bootstrap <基础八>图片
    Bootstrap <基础七>按钮
    Bootstrap<基础六> 表单
    Bootstrap <基础五>表格
  • 原文地址:https://www.cnblogs.com/fukajg/p/2727397.html
Copyright © 2020-2023  润新知