zoukankan      html  css  js  c++  java
  • Oracle sql的基本优化写法和思路。

    首先简单介绍下常规的sql优化的方式:

    1.肯定有人说建索引啊。

    2.数据量实在太大,建分区啊。

    3.其实基于目前公司的业务还有一种办法那就是向上聚集表。根据查询业务,专门抽取上来一张表,直接做到select就好。

    4.其实还可以把表细分,然后通过应用控制根据不同条件查询不同表

    其实,我觉着以上这些思路的前提是SQL写法不能在优化了,不过一般情况下sql优化下 换个写法我觉着能解决最起码50%的查询慢的问题。

    下面开始介绍日常开发写sql需要注意的地方

    1.得学会看执行计划。

      什么是执行计划,执行计划我觉着就是oracle决定如何来执行你的sql的一个过程记录,这个东西是会被缓存的,前提是你的sql跟缓存起来的一模一样

      plsql里面F5就可以看执行计划了。p

      执行计划的执行顺序是 缩进最多最先执行,同样缩进从上往下。

      主要看几点就好了,是不是全表扫描,走没走索引,基数(就是返回结果集) 耗费(就是这个过程要多久)

    2.写sql一些简单的规范

      写sql尽量都大写,还有写表的别名,然后选择字段都是写别名.字段名 ,别用select * 

    3.like走索引不?

      like 'abc%' 走索引    like '%abd%'不走索引

    4.学会使用exists

      可以使用exists代替in ,not exists 代替 not in

    5.不要对索引列进行计算导致索引失效,也不要让他自动转型

    6. is null 和 is not null 不走索引

    7. 复合索引,是有顺序的, 如果你只用了其中一个非第一个 那是没用的

    8.ORDER BY 走不走索引?

      走索引,但是有两个限定:

       (1)ORDER BY中所有的列必须包含在相同的索引中并保持在索引中的排列顺序。 

         (2)ORDER BY中所有的列必须定义为非空

    9.使用>=  代替 >

    10.不走索引的其他情况

       (1)'!='不走索引。索引只能告诉我们什么存在于表中, 而不能告诉你什么不在表中。

       (2)'||'是字符连接函数。就象其他函数那样, 停用了索引。

       (3)'+'是数学函数。和其他数学函数一样, 停用了索引。

       (4)相同的索引列不能互相比较,这将会启用全表扫描。

    还有很多优化的地方...只能在工作中慢慢学习。。。

  • 相关阅读:
    java基础之switch
    String的getBytes()方法
    Android adb命令
    shell中grep命令详解
    su root 和su
    adb shell 命令详解
    adb shell am 的用法
    adb logcat 基本用法
    Android、iOS和Windows Phone中的推送技术
    Android客户端消息推送原理简介
  • 原文地址:https://www.cnblogs.com/haoerlv/p/10045735.html
Copyright © 2011-2022 走看看