| « | 三月 2010 | » | ||||
|---|---|---|---|---|---|---|
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 | ||||
课程主要内容分为两阶段,第一阶段为UNIX系统管理部分,时间安排为4天32学时
具体包括以下方面:
1 UNIX基础
2 AIX系统管理
第二阶段为Oracle 10g数据库管理,时间安排为3天24学时,内容包括
1 UNIX系统下Oracle体系架构
2 Oracle在AIX下的安装
3 AIX下Oracle的各种DBA工作,各项DBA操作在Unix系统下的做法
4 Unix下的备份与恢复
5 具体案例讨论
两阶段均有实际大型机房安排参观学习,设备包括
IBM P650和动态分区应用环境
DS4500和3584存储环境
IBM P650小型机 3台
磁盘阵列 ds4500 2台
IBM P630小型机 1台
磁带库3584 1台
比较全面的IBM环境
时间安排:
第一阶段(AIX系统管理):10月1,2,3,4日,共4天32学时
第二阶段(Oracle DBA):10月5,6,7日,共3天32学时
select id, email, status
from test a
where a.id = #Id#
and a.gmt_created = (select max(b.gmt_created)
from test b
where b.id = #Id#);
这个sql对于开发工程师来说,是比较常见的,意思是求最近的一个记录,该索引创建成(id,gmt_created)组合索引,但这样写有两个问题,一是对于索引来讲,需要扫描两次,一次子查询中的聚合扫描,一次范围扫描,第二个问题比较严重,有可能两条记录的gmt_created是一样的,结果集可能是多条,那程序可能就会出错。。。
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost |
-------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 92 | 1 |
| 1 | TABLE ACCESS BY INDEX ROWID | TEST | 1 | 92 | 1 |
|* 2 | INDEX RANGE SCAN | IDX_TEST_ID | 1 | | 1 |
| 3 | SORT AGGREGATE | | 1 | 27 | |
| 4 | FIRST ROW | | 1 | 27 | 1 |
|* 5 | INDEX RANGE SCAN (MIN/MAX)| IDX_TEST_ID |1 |
--------------------------------------------------------------------------
改进后的sql如下所示:
select *
from (select id, email, status
from test a
where a.id = :1
order by a.gmt_created desc)
where rownum = 1;
-------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 83 | 1 |
|* 1 | COUNT STOPKEY | | | | |
| 2 | VIEW | | 1 | 83 | 1 |
| 3 | TABLE ACCESS BY INDEX ROWID | TEST | 1 | 92 | 1 |
|* 4 | INDEX RANGE SCAN DESCENDING| IDX_TEST_ID |
--------------------------------------------------------------------------
利用索引逆向扫描,即避免了2次索引扫描,也避免了结果集多于2条的情况。。。
-------------转自老和尚