Oracle优化问题??
我有一个表PO,有3万多条记录。Create Table PO(
PO_KEY number,
...,
constraint pk_po primary key(po_key))就是PO_KEY是主键我想各位帮我分析下面两个查询一致性读差别这么大,理论上说应该不大的。select count(*) from POExecution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=8 Card=1 Bytes=7)
1 0 SORT (AGGREGATE)
2 1 INDEX (FAST FULL SCAN) OF 'PK_PO' (UNIQUE) (Cost=8 Card=
30144 Bytes=211008)Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
68 consistent gets
0 physical reads
0 redo size
385 bytes sent via SQL*Net to client
503 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processedSQL> SELECT PO_KEY FROM PO;30144 rows selected.
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=8 Card=30144 Bytes=
20576) 1 0 INDEX (FAST FULL SCAN) OF 'PK_PO' (UNIQUE) (Cost=8 Card=3
144 Bytes=120576)Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
2074 consistent gets
0 physical reads
0 redo size
427286 bytes sent via SQL*Net to client
22602 bytes received via SQL*Net from client
2011 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
30144 rows processed
都是从索引中读取数据,为什么差别这么大。
应该一样才对阿。
我看了索引占用的9个extent,每个大小为64K。
我有一个表PO,有3万多条记录。Create Table PO(
PO_KEY number,
...,
constraint pk_po primary key(po_key))就是PO_KEY是主键我想各位帮我分析下面两个查询一致性读差别这么大,理论上说应该不大的。select count(*) from POExecution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=8 Card=1 Bytes=7)
1 0 SORT (AGGREGATE)
2 1 INDEX (FAST FULL SCAN) OF 'PK_PO' (UNIQUE) (Cost=8 Card=
30144 Bytes=211008)Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
68 consistent gets
0 physical reads
0 redo size
385 bytes sent via SQL*Net to client
503 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processedSQL> SELECT PO_KEY FROM PO;30144 rows selected.
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=8 Card=30144 Bytes=
20576) 1 0 INDEX (FAST FULL SCAN) OF 'PK_PO' (UNIQUE) (Cost=8 Card=3
144 Bytes=120576)Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
2074 consistent gets
0 physical reads
0 redo size
427286 bytes sent via SQL*Net to client
22602 bytes received via SQL*Net from client
2011 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
30144 rows processed
都是从索引中读取数据,为什么差别这么大。
应该一样才对阿。
我看了索引占用的9个extent,每个大小为64K。
解决方案 »
- 关于冷备份与热备份
- Oracle
- oracle 语句查看字段类型
- 请帮忙解释一下
- 关于oracle中 动态sql
- ◆◆◆◆◆◆在SQLplus中读取存储过程或包(体)◆◆◆◆◆◆
- 请问把password设置成过期状态有什么用?
- 哪位高手帮我看一下这个过程?编译通过了,可是执行老是出错!真讨厌!
- 如何使用户在pl/sql中用户新建一个过程或表等时,弹出一输入框输入一些信息?
- oracle9i用java进行数据库更新时java程序经常会死掉
- 求Oracle一个自定义函数的写法:sql2000里的isnull(pa,pb)在oracle自定义函数
- “将表BASE_DOC_ITEM_RL的外键FK_BASE_DOC_ITEM_RL1设置为Cascade”
原文是这样的:
consistent gets Number of times a consistent read was requested for a
block
翻译过来就是:在一致性读的过程中,对于数据块请求的次数.
需要指出的是coun(*)和读取一般数据的方式是不一样的. 有的时候,仅仅扫描表头即可
因此自然两个的具体数值是不一样的.