Oracle SQL优化初解

   SQL这个语言发现越写是发现是越有意思,比如说公司有大牛能把跑快一天的报表优化到半个小时,能把一分钟的报表优化到1秒,都感觉自己用的是假的SQL。当然虽然这些大牛没有太多共事,但是也学习到许多SQL知识。
   设计数据库,需要的是3大范式  1.无重复列,2.依靠主键,不能多主键,3.数据列信息不要重复存储
    3大范式中第3个造成数据冗余其实看情况是可以接受的,因为一定量的数据冗余可以让你的业务处理更加方便,当然尽量不要这么做,但是1,2这2种情况最好不要发生。这些都是血泪的教训,每一个范式或者说设计模式都是一个经典,都是一个通用的解决思路,值得学习。
    SQL的优化,是要实事求是的,不同的需求对索引,in,exists之类的用法都需要实事求是。没有一个一定的标准说一定快
    SQL首先需要看你的表主要是做什么的,主存储表,还是主查询表。对应这个,是否加索引,数据库表设计时怎么设计字段类型,这些都是小事情。
    SQL优化的方式千千万万,现在函数的用法,各种各样的方法,我现在一一总结我觉得是没有必要的,首先抓住核心,看走的执行计划,看他的COST,IO COST,CPU COST,Cardinality,查看这些花销是否异常
   常用的一些需要注意的就是 外联结,内联接,尽量用內联结,exists,in一般来说都走exists,当然也不是一定的,比如in表中in里面的数据量更多,更倾向于用In,因为in是走里面的索引,对此引申出,查询或许有多个走索引,但是数据量是不同的,根据不同的数据量,走不同的索引,这才是更科学的方法。

    复杂的查询,一定要记得驱动表这个概念,或者说是视图,先用子限定条件限定好,作为一个驱动表,然后用驱动表的数据进行和其他的数据用索引进行查询,这样是提速度的方法。

    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值