对SQL语句进行分析和优化

安装和查看甲骨文执行计划
甲骨文在执行SQL语句时使用的步骤的集合叫做执行计划

前起条件:
,,,在目录:$ ORACLE_HOME/RDBMS管理目录下的执行utlxplan。sql

查看执行计划:
,,,EXPLAN计划& lt; SQL语句在
,,,
,select *,信贷@ORCL>解释计划从信用卡;

解释道。

看SQL执行计划的信息
信用@ORCL>选择一个。操作,选择,object_name object_type, id, parent_id plan_table命令id;

更直观:
信用@ORCL>选择lpad(“2 *(1) | |操作| |“| |选项| |“| | object_name | |的| |解码(id 0成本=' | |职位)“查询计划”由之前的id=parent_id plan_table连接;

查询计划
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
表ACCESSFULLCREDITCARD表ACCESSFULLCREDITCARD

选择STATEMENTcost=3
表ACCESSFULLCREDITCARD表ACCESSFULLCREDITCARD

选择STATEMENTcost=3
表ACCESSFULLCREDITCARD表ACCESSFULLCREDITCARD

这个也可以查询:
信用@ORCL> SELECT * from TABLE (dbms_xplan.display);

PLAN_TABLE_OUTPUT
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
计划散列值:2658862924

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| Id | Operation ,,,| Name ,,,,,| Rows 成本(% CPU) | | |字节Time ,,,|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|,,0 |选择STATEMENT |,,,,,,,,|,,,,9 |,1332 |,,,,3,,,(0)| 00:00:01 |
|,,1 |,表访问全部| |考完中考之后,,,,9 |,1332 |,,,,3,,,(0)| 00:00:01 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

注意
- - - - - -
,,这句话所用的动态取样(级别=2)

打开自动跟踪功能:
,,,设置自动跟踪

通过ROWID访问表的执行计划:
,,,SYS SYSDBA@ORCL>解释计划
,2,select *从hr.departments rowid=癆AAR5QAAFAAAACvAAa”;

解释道。

运行:00:00:00.05
SYS SYSDBA@ORCL> select * from table (dbms_xplan.display);

PLAN_TABLE_OUTPUT
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
计划散列值:313428322

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| Id | Operation ,,,,,| Name ,,| Rows 成本(% CPU) | | |字节Time ,,|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|,,0 |选择STATEMENT ,,,|,,,,,|,,,,1 |,,,21日|,,,,1,,(0)| 00:00:01 |
|,,1 |,表访问用户ROWID | |部门,,,,1 |,,,21日|,,,,1,,(0)| 00:00:01 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

8行选择。


连接查询的执行计划:
,,,

优化案例分析:
,,,提高GROUP BY语句的效率:
,,,选择cardno,总和(数量)从使用group by cardno cardno cardno==?555 xxxx3”或有“9555 xxxx8”;
,,,- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| Id | Operation ,,,,,| Name ,,| Rows 成本(% CPU) | | |字节Time ,,,|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|,,0 |选择STATEMENT ,,|,,,,,,,|,,114 k |,4475 k |,,175年,,,(3)| 00:00:03 |
| *,1 |,过滤器,,,,,,|,,,,,,,|,,,,,,|,,,,,,|,,,,|,,,,,,,|
|,,2 |,,散列组BY ,,,|,,,,,,,|,,114 k |,4475 k |,,null

对SQL语句进行分析和优化