码迷,mamicode.com
首页 > 数据库 > 详细

SQL优化的方法论

时间:2015-03-05 10:38:21      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:

•找到最占用资源的SQL语句
–V$SQLAREA (Shared_pool)
–V$session_longops(6秒)
–StatsPack Report
–SQL*Trace + TKProf
–10g ADDM
–Toad、Quest Data Center
–…
 
•问题定位 How to find Bad SQL
–V$SQLAREA (Shared_pool)
–StatsPack
–SQL*Trace + TKProf
–10g ADDM
•优化SQL语句
–理解优化器、CBO & RBO和执行计划
–Explain Plan, Tkprof & SQL_TRACE, autotrace, Toad
–Tune Join (Sort Merge, Nest Loop, Hash Join)
–Tune Index, MV (Summery and Join Table)
–分区、并行、使用hint和特殊SQL的优化
 
---
查找大量逻辑读的语句

select   buffer_gets, sql_text  

from     v$sqlarea

where    buffer_gets > 200000

order by   buffer_gets desc;

 

SQL语句的优化:

•索引和数据访问
索引分类: 

逻辑上

–单列或组合索引
–唯一非唯一索引

物理上

–分区和非分区索引
–B-tree 和 bitmap
  正常或逆向(B-tree only)
–函数索引
 
•Join模式
•优化提示hint
•分区
•物化视图
•并行
•关于SQL优化的其它事项
 
Oracle如何访问数据
•Single Table Access Path
–Full Table Scan
技术分享
–ROWID unique scan
技术分享
–Index unique scan
技术分享
–Index range scan
技术分享
–Unique Index Range Scan
技术分享
–Index Skip Scan
技术分享
–Index (fast) full scan
技术分享
–Bitmap Index
•Table Join
1, Nested Loop 

The driving table should be small 

The other tables is indexed.

技术分享

技术分享

技术分享

2, Sort Merge

For large data sets (Sort_Area_Size)

The row sources are sorted already.

A sort operation does not have to be done.

技术分享

技术分享

技术分享

技术分享

3, Hash Join

For large data sets(Hash_Area_Size)

Optimizer_mode=CBO

Pga_aggregate_target is big enough

SQL优化的方法论

标签:

原文地址:http://www.cnblogs.com/gary-bao/p/4314962.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!