zoukankan      html  css  js  c++  java
  • Oracle 学习笔记(四)

    一、高效 SQL 语句原则

    •   在where 中用 = 关系运算时
    •  避免用函数在关系运算中,除非你使用函数建立索引
    •  尽量不要隐式转化数据类型,数据类型一定要匹配
    •  尽量将一句SQL分成多个语句完成
    •  不能差分的请用UNION ALL 来组合
    •  条件确定的子查询  Exist 适合于外表小,内表大    in  适合于外表大,内表小
    •  使用视图的注意事项
    •  复杂视图的连接要小心,尤其有外键的时候
    •  当查询的是视图中引用的部分表的时候,请不要使用视图,或者建立新的更小的表
    •  存储中间结果
    •  对查询中可能多次调用的结果集,请保存
    •  考虑使用物化视图
    •  将复杂的不能优化的查询分阶段完成
    •  尽量减少访问数据的次数
    •  使用 case 语句
    •  使用高级分组rollup,cube
    •  使用存储过程
    •  使用 RETURNING 子句

    二、全表扫描

    •    全表扫描:将高水位线下的数据块都读一遍。
    •    DB_FILE_MULTIBLOCK_READ_COUNT 参数决定扫描的速度,该参数的值乘以块的
    •    大小应该小于操作系统的最大io
    •    因为范围是连续的块,所以全表扫描会连续的读,效率很高   

    三、何时会使用全表扫描

     1.表小

     2.索引缺少,条件判定列上没有索引

     3.使用hint,强制使用全表扫描

     4.读的数据比重大。一般超过 10%的数据要读取就会选择全表扫描

     5.并行查询,和索引是对立的,两者必须选择一个

     四、全表扫描的优化
       1.回收高水位线
       2.DB_FILE_MULTIBLOCK_READ_COUNT 加大
       3.使每个块装的数据更多,减少 pctfree
       4.使用并行查询
       alter system set db_file_multiblock_read_count=32;修改参数配置,默认为16 个块
       alter table t1 pctfree 0; 将每个数据块都装满
       alter table t1 move tablespace users;  移动表空间

    五、 数据库查询的优化,Hints
        Hints,即提示,强制该语句以我们指定的方式运行,作用范围是当前语句,对后面语句不影响。书写时,一定要放在第一个单词(select) 的后面。Hints 的写法有两种:  /*+ 提示 */  , --+ 提示

    六、SQL  查询优化

    1.尽量避免在一个复杂查询里面使用 LIKE '%parm1%'     百分号会导致相关列的索引无法使用,最好不要用.  

      •   在前端进行下拉框的输入搜索
      •  在后端进行查询范围控制,不查询无关数据  

    2. 索引   

      •  数据量大的时候,建立索引   
      •  避免对索引进行计算操作   
      •  避免在索引列上使用 not, <>, !=   
      •  .避免在索引列上使用 is null 和 is not null   
      • 避免在索引列上使用数据类型转换   
      •  .避免在索引列上使用函数   
      •  避免在索引列上使用空值   

    3. 复杂查询     可将复杂查询进行拆分,分步进行  

    4. 尽量使用 union all    union 会对数据进行排序,并去除重复的行,比较消耗资源    union all 则不进行排序,不去除重复的行   

    5. 在where 语句中合理使用 in , not in ,exist,not exist    Exist 适合于外表小,内表大    in  适合于外表大,内表小  

    6. 排序    避免使用消耗资源的操作,带有 distinct, uinon,minus,intersect,order by 的语句    会启动 sql 引擎,distinct  需要一次排序,而其它至少需要执行2次排序。

    7. 临时表    慎重使用临时表,可以极大的提高性能。   

  • 相关阅读:
    hdu 5224 Tom and paper 水题
    2015 UESTC 搜索专题N题 韩爷的梦 hash
    2015 UESTC 搜索专题M题 Palindromic String 马拉车算法
    2015 UESTC 搜索专题K题 秋实大哥の恋爱物语 kmp
    2015 UESTC 搜索专题J题 全都是秋实大哥 kmp
    2015 UESTC 搜索专题F题 Eight Puzzle 爆搜
    2015 UESTC 搜索专题E题 吴队长征婚 爆搜
    2015 UESTC 搜索专题D题 基爷的中位数 二分
    2015 UESTC 搜索专题C题 基爷与加法等式 爆搜DFS
    2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索
  • 原文地址:https://www.cnblogs.com/wisdo/p/7439816.html
Copyright © 2011-2022 走看看