wukaiqiang 发布的文章

定制执行计划

在Oracle数据库中,执行计划是树形结构,因此我们可以利用树形查询来定制执行计划。我们打开PLSQL dev SQL窗口,登录示例账户Scott并且运行如下SQL。explain plan for select /*+ use_hash(a,dept) */ * from emp a, dept where a.deptno = dept.deptno and a.sal > 3000; 然后执行下面的脚本,结果如图3-2所示。select case when (filter_predicates is not null or ...

查看正在执行的SQL的执行计划

有时需要抓取正在运行的SQL的执行计划,这时我们需要获取SQL的SQL_ID以及SQL的CHILD_NUMEBR,然后将其代入下面SQL,就能获取正在运行的SQL的执行计划。select * from table(dbms_xplan.display_cursor('sql_id',child_number)); 在一个会话中执行如下SQL。select count(*) from a,b where a.owner=b.owner; 在另外一个会话中执行如下SQL。select a.sid, a.event, a.sql_id, a.sql_child_number, b.sql_te...

查看带有A-TIME的执行计划

查看带有A-TIME的执行计划的用法如下。alter session set statistics_level=all; 或者在SQL语句中添加hint:/+ gather_plan_statistics /运行完SQL语句,然后执行下面的查询语句就可以获取带有A-TIME的执行计划。select * from table(dbms_xplan.display_cursor(null,null,'allstats last')); 示例(Oracle11gR2,Scott账户)如下。SQL> select /*+ gather_plan_statistics full(test...

定制统计信息收集策略

下面脚本用于收集SCOTT账户下统计信息过期了或者是从没收集过统计信息的表的统计信息,采样率也根据表的段大小做出了相应调整。declare cursor stale_table is select owner, segment_name, case when segment_size < 1 then 100 when segment_size >= 1 and segment_size <= 5 then ...

收集统计信息

我们使用method_opt => 'for all columns size auto'方式对表收集统计信息。SQL> BEGIN DBMS_STATS.GATHER_TABLE_STATS(ownname => 'SCOTT', tabname => 'T_STATS', estimate_percent => 100, ...