sql性能优化

  

  性能优化   
  全表扫描(多块读的大小)数据量比较多的时候   
  1,并行查询2,多块读3,索引全扫描   
  行ID    
  索引就是一个数据库对象,包含   
  k值和行id的新表。   
  OLTP:线上交易系统   
  常见索引:B树索引(随着数据量的增大,右边节点也会随之增大,导致不平衡,产生分支节点,增加I/O)   
  位图索引(适用于数据仓库中,增删改比较少的表中,需要整张表的信息)。   
  好处:获取表的所有信息。获取行id的开始值和结束值。缺点:索引对增删改有影响,锁定两张表   
  基于函数的索引(使用局限性比较大,使用率低。需要评估,)   
  造成函数索引失效:1、外层套索引2,做运算3模糊查询,   
  统计收集索引信息的时间:周内(凌晨2 - 4点)周末()   
  统计表信息,数据字典   
  反向索引:   

  

  收集T表统计信息:exec dbms_stats.gather_table_stats(& # 39;斯科特# 39;& # 39;T # 39;);   
  新建表的统计信息为空   
  索引不可见:改变指数cust_id_idx无形的   
  改变指数cust_id_idx可见   
  反向索引:为了避免热块效应(性能很低),引用反向索引,使用分块方法。   
  缺点:不支持范围扫描,只能用于等值查询   
  索引扫描类型索引的唯一扫描(索引值唯一,在判断=)   
  索引的范围扫描(读单块)   
  索引跳跃扫描(复合索引)   
  索引快速全扫描(多块扫描)   
  索引全扫描   
  1、2索引常用   

  

  ,   

  

  2种优化访问路径   
  1,全表扫描(对表中所有进行简单扫描,主要是在某个查询请求表的大部分块时,)   
  2,索引访问路径(基于行id)   
  数值小于百分之七会走索引   

  

  
  撤销   
  ora - 01555快照过旧(有大事务)updata事务太大,撤消表空间存放不下,解决办法就是强制关闭可以终止事务。扩大撤消表空间。   
  撤销里面有前镜像.CTAS创建表选择   
  撤销不能设成自动扩展   
  索引全扫描   
  产生索引全扫描的条件:   
  命令对应id    
  通过对应的id   
  索引快速全扫描:(同时访问多个块)   
  索引本身包含查询中的所有列时,oracle执行索引快速全扫描。   

  

  索引名称:(如何确定是否使用了索引)   
  改变指数cust_id_idx监测使用;   
  选择index_name,监控,使用从v object_usage美元;   
  避免使用索引:   
/* + NO_INDEX(有+号是提示,没有+号是注释)   
  查看执行计划:   
  解释计划的select * emp empno=?765’   
  从电磁脉冲(dbms_xplain_display)选择*   

  

  不走索引的情况   
  索引列时不会有零(空值)的   
  有不等式时不走索引,在或不在时不走索引。   
  使用通配符时,模糊查询时不走索引。   
  谓词中使用了空值时不走索引。   
  查询中包含函数的时候不走索引。   

  

  统计信息查询   
  dbms存储过程包   

  

  
  

sql性能优化