Oracle SQL优化初解

    xiaoxiao2021-03-25  6

       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是走里面的索引,对此引申出,查询或许有多个走索引,但是数据量是不同的,根据不同的数据量,走不同的索引,这才是更科学的方法。

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

        

    转载请注明原文地址: https://ju.6miu.com/read-149630.html

    最新回复(0)