暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle SQL编码书写规范

蕾蕾的成长游记 2017-05-15
393

       Oracle SQL的规范化,也是优化,解析SQL很重要的一环;团队或个人有良好的SQL规范.也是减轻服务器解析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 (子查询)


这个不说,来报名吧 http://www.7daysgps.com/


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


来报名吧, http://www.7daysgps.com/


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


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


12. 注意数据类型之间的隐式转化


 


文章转载自蕾蕾的成长游记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论