• SQL 编码规范


    1. 必须对表起别名,方便调查表用了哪些列 

    比如 select owner,object_id,name from a,b where a.id=b.id;

    如果不对表取别名,我怎么知道你访问的列是哪个表的。如果SQL几百行,如果SQL表关联很多,去死吧。 

    2. 数据库对象 命名 

    表             前缀/后缀 T_XXX

    视图         前缀/后缀  V_XXX

    物化视图  前缀/后缀 MV_XXX

    索引         IDX_列名 

    特殊表

    数据仓库 事实表  _FACT

    数据仓库 维度表  _DIM

    业务中间表  _TMP

    日志表      _LOG 

    才用这种命名规范,方便不熟悉业务的DBA,开发人员更快的上手 

    3. 严禁标量子查询(分页可以写) 

    select (select ... from a where a.id=b.id) from b;  ---这种就叫标量子查询 

    假如 b 返回100w 那么 a可能被扫描 100w次 然后你懂的 死了 

    标量子查询 全部改写为 select ... from a left join b ..... 

    4. 严禁sql套自定义函数,包,存储过程 

    道理跟 标量子查询一样 

    5. 严禁视图中select包含ROWNUM create or replace view ....select rownum 

    影响谓词推入+视图合并 

    6. 严禁视图 里面有 order by 

    干扰执行计划 

    7. 严禁视图套用超过2个 ,因为最里面的视图改了可能影响最外面的 高内聚 低耦合 

    如果最里面的视图出问题,那么调用这个视图的SQL全出问题,改写代码都改死你 

    8. in exists ,not in not exists 改写为 with as (子查询) 

    9. 分页不能有 distinct, group by ,union /union all,order by 只能一个表 

    10. 关联更新,改写为merge 或者改写为利用 rowid更新 

    11. 禁止对join列用函数 比如 where trunc(时间)=b.时间 

    12.注意隐式转化 

  • 相关阅读:
    将Microsoft SQL Server 2000数据库转换成MySQL数据库
    centos7 升级php版本
    Jquery Ajax方法传递json到action
    2015/12/7
    sql server 2008 评估期已过期
    C# 邮件发送注意事项
    ReSharper warning: Virtual member call in a constructor
    EF code first 生成edmx文件
    EF 已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭
    C# 发送邮件
  • 原文地址:https://www.cnblogs.com/SUN-PH/p/4921590.html
Copyright © 2020-2023  润新知