Oracle数据库11g新特性:可管理性
2008-12-16 13:01:12 来源:WEB开发网STATUS COUNT(1)
------- ----------
CLOSED 68857
OK 6
VALID 1
注意,包含 VALID 的行的个数降为 1.此时,查询不应采用全表扫描,而应使用索引。但是如果您运行查询并检查执行计划:
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 68858 | 1075K| 290 (3)| 00:00:04 |
|* 1 | TABLE ACCESS FULL| RES | 68858 | 1075K| 290 (3)| 00:00:04 |
--------------------------------------------------------------------------
您将看到该查询仍然会进行全表扫描。原因在于统计信息没有更新(是旧的)。优化程序仍然认为包含值 VALID 的行的数目占大多数,因此会生成一个全表扫描计划。您可以重新生成统计信息,这样可以纠正优化程序之前想好的进程,转而使用索引。但是,这带来一个比较棘手的问题:这会破坏某些其他的查询吗?
先不要猜测,请使用提供的程序包 dbms_stats 中的 set_table_prefs 过程,将表 RES 的 PUBLISH 首选项更改为 false.然后照常收集该表的统计信息。由于现在统计信息正在审核中,优化程序不会使用它们。不过,您可以确定它们对优化程序的影响。一个专用的参数可以使优化程序使用正在审核的统计信息,而非已发布的信息。
SQL> alter session set optimizer_use_pending_statistics = true;
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接