• 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.注意隐式转化 

  • 相关阅读:
    httpd服务器的真实ip获取难题
    nginx配置文件详解
    nginx基础知识总结
    Web服务并发I/O模型
    chrony时间服务器
    Linux运维之每日小技巧-检测网站状态以及PV、UV等介绍
    Centos7系统下编写systemd脚本设置redis开机自启动
    Kibana中的Coordinate Map地图报索引错误的问题
    apache的php模块讲解以及搭建phpmyadmin管理数据库mysql
    AMP架构补充与wordpress部署
  • 原文地址:https://www.cnblogs.com/SUN-PH/p/4921590.html
Copyright © 2020-2023  润新知