关于数据库SQL优化的一些笔记

最近在参加培训,正好上到了一堂关于“开发DBA”的课,课上讲了很多以前不太了解的东西,比如“开发DBA”和“传统DBA”的区别之类的东西,不过对我而言,最有价值的貌似还是一些小的SQL优化技巧,在这里做个笔记。

在Oracle中SQL语句的处理过程分为三步:parse=>execute=>fetch,其中fetch这个阶段只有 select有,语法分析和执行阶段所有语句都有。用trace工具可以看到整个语句的执行过程,我从没做个DBA,开发时也没有用过类似工具,顶多也就用PL/SQL跑跑语句(其实自打用了Hibernate后我都很少写SQL了,惭愧啊)。

  • select语句中少用*,因为这会带来额外的开销(IO、网络方面等等)
  • 避免索引列的隐式类型转换,因为类型转换后使用该列的查询是全表扫描 ,这个在大数据量时可是致命的
  • 避免在字段上使用函数,这样无法使用该字段上的索引
  • count()不会返回null,但sum()会,用nvl(sum(XXX), 0)来避免这个情况
  • 少用lob这样的大字段

站在前人的经验上,希望自己以后多长点记性,虽然我只是个开发人员,不是DBA,不过多学点总没坏处,呵呵~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值