数据库开发规范与优化(一)

这个日常工作总结,分享给大家~~

性能优化

  1. 避免频繁commit,尤其是把commit写在循环体中每次循环都进行
  2. 使用绑定变量,避免常量的直接引用
  3. 避免不必要的排序
  4. 对于数字型唯一键值,用序列sequence产生
  5. 两表或者多表作连接时,要明确指定其连接条件,以避免产生迪卡尔积
  6. 不要用 not in,使用exists来使用索引

设计规范

  1. 临时表(temporary table)使用
    A.
    如果数据仅在同一个会话中使用,建议尽量使用Oracle定义的全局临时表(Global temporary table),而不是创建的普通表。
    B.
    对于跨会话使用的临时表,只能使用普通表,但必须建立适合的清理策略,不然临时表会越来越大。
    C.
    清理策略:使用 job 或手工执行,可根据实际分直接清理和先备份后清理两种,策略上 常用的有四种:
    truncate
    推荐
    delete
    不能解决高水位
    drop
    只能手工清理
    rename
    只能手工清理
  2. 数据类型设计必须充分考虑Oracle提供的基础数据类型。
    A.
    基础数据类型有数值(NUMBER)、日期(DATE)和字符(V ARCHAR2),设计时需充分考虑,使用不同的数据类型来存储相应的数据。
    B.
    建议不使用VARCHAR2或其他字符类型来存储日期值,如果使用,则不能在此字段上 做运算,需要在数据规范中严格定义。
    C.
    表字段不允许使用TYPE定义
  3. 数据量超过10000的表应该考虑设计索引
  4. 经常与其他表进行连接的表,在连接字段上应该建立索引
  5. 经常出现在Where子句中的字段且过滤性很强的,特别是大表的字段,应该建立索引;
  6. 频繁DML(写次数明显超过读次数)的表,不要建立太多的索引
  7. 无用的索引以及重复索引应删除,避免对执行计划及数据库性能造成负面影响。
  8. OLTP 系统,禁止使用位图索引
  9. 所有数据库代码使用统一的大小写规则书写,如数据库关键字用大写,其他小写
  10. 模块代码使用注释区分
  11. 语句中空白使用空格键,不用TAB
  12. 关键字对齐方式要一致
  13. 不要把多个语句写在一行中
  14. 避免将 SQL 语句写到同一行
  15. 相对独立的程序块之间必须加空行
  16. 最外层的 begin、end 独立成行,且不缩进
  17. 避免使用 select * 语句
  18. Insert 语句必须给出字段列表
  19. 尽量少使用甚至不使用 DBLINK
  20. 频繁调用的 SQL 语句编写一定要使用绑定变量
  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值