zz22 发表于 2018-9-26 10:40:54

浅谈oracle查询性能优化

  工作过程中对oracle使用过程中遇到问题的解决方法进行汇总,方便后续自己查询。欢迎大家勘正
  性能问题主要体现在数据查询没有在最长可接受时间范围内出结果,对应到数据库底层来讲,数据库内存进行大量的数据页交换,大量的磁盘读写。
  针对这种情况,确认数据库的SGA大小,可以考虑将数据文件分盘存放(调整表空间数据文件的存放位置),降低磁盘的访问压力;调整数据表中的数据和索引存放至不同表空间;
  首先,确认查询sql语句是否拼接编写,是否使用绑定变量的方式;
  其次,查看验证查询sql语句多表组合编写方式,先过滤再组合;
  接着,查看查询sql语句的执行计划,主要查看对表扫描的方式,以及对索引的执行情况
  查询中用到的各种hint方式主要有以下形式:
   /*+ALL_ROWS*/
  :Uno,M-S4u0表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.ITPUB个人空间Yk3B3P ZJ/w
  . /*+FIRST_ROWS*/
  O0CfP_F3O0表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.
  0_8LGx&[G0f4w0
  . /*+CHOOSE*/ITPUB个人空间`0Xbzfu1C
  表明如果数据字典中有访问表的统计信息,将基于开销的优化方法,并获得最佳的吞吐量;
  &HIQ$Q#@fC3p b0表明如果数据字典中没有访问表的统计信息,将基于规则开销的优化方法;ITPUB个人空间#SI:F*B|{zRn
  . /*+RULE*/
  5i;b.g+pNj.v0表明对语句块选择基于规则的优化方法.
  ,@w_$R!dFJ3_UZ0
  . /*+FULL(TABLE)*/
  6~+L&Ui$_0表明对表选择全局扫描的方法.ITPUB个人空间~9Rf!F'Wh9H_r
  . /*+ROWID(TABLE)*/
  1GTBP#p0提示明确表明对指定表根据ROWID进行访问.

页: [1]
查看完整版本: 浅谈oracle查询性能优化