函数索引与统计更新
来源:互联网 发布:2017微信加粉丝软件 编辑:程序博客网 时间:2024/05/24 03:22
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Productio
NLSRTL Version 10.2.0.4.0 - Production
SQL> set timing on;
SQL> create table test as select * from dba_objects ;
表已创建。
已用时间: 00: 00: 01.77
SQL> set autotrace on;
-- 查询中用到了substr函数,由于没有索引。理所当然走全表扫描TABLE ACCESS FULL
SQL> select count(1) from test
2 where substr(object_name, 1, 3)='abc';
COUNT(1)
----------
0
已用时间: 00: 00: 00.10
执行计划
----------------------------------------------------------
----------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
----------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 66 | 236 (2)|
| 1 | SORT AGGREGATE | | 1 | 66 | |
| 2 | TABLE ACCESS FULL| TEST | 12 | 792 | 236 (2)|
----------------------------------------------------------------
Note
-----
- 'PLAN_TABLE' is old version
统计信息
----------------------------------------------------------
48 recursive calls
0 db block gets
1114 consistent gets
1030 physical reads
0 redo size
223 bytes sent via SQL*Net to client
243 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
--创建函数索引test_idx_obj_name
SQL> create index test_idx_obj_name on TEST (substr(object_name,1,3));
索引已创建。
已用时间: 00: 00: 00.70
--创建函数索引后,执行计划走了索引,执行时间由 00: 00: 00.10 缩短到 00: 00: 00.03
SQL> select count(1) from test
2 where substr(object_name, 1, 3)='abc';
COUNT(1)
----------
0
已用时间: 00: 00: 00.03
执行计划
----------------------------------------------------------
----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 66 | 1 (0)|
| 1 | SORT AGGREGATE | | 1 | 66 | |
| 2 | INDEX RANGE SCAN| TEST_IDX_OBJ_NAME | 12 | 792 | 1 (0)|
----------------------------------------------------------------------------
Note
-----
- 'PLAN_TABLE' is old version
统计信息
----------------------------------------------------------
28 recursive calls
0 db block gets
79 consistent gets
1 physical reads
0 redo size
223 bytes sent via SQL*Net to client
243 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
-- 能不能在快点呢?我们试着对该表做个统计分析,再来看结果
SQL> analyze table test compute statistics;
表已分析。
已用时间: 00: 00: 03.23
SQL> select count(1) from test
2 where substr(object_name, 1, 3)='abc';
COUNT(1)
----------
0
已用时间: 00: 00: 00.01
执行计划
----------------------------------------------------------
----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 21 | 1 (0)|
| 1 | SORT AGGREGATE | | 1 | 21 | |
| 2 | INDEX RANGE SCAN| TEST_IDX_OBJ_NAME | 62 | 1302 | 1 (0)|
----------------------------------------------------------------------------
Note
-----
- 'PLAN_TABLE' is old version
统计信息
----------------------------------------------------------
1 recursive calls
0 db block gets
2 consistent gets
0 physical reads
0 redo size
223 bytes sent via SQL*Net to client
243 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
--统计更新后执行时间缩短到 00: 00: 00.01 ,而且consistent gets 和recursive calls 也有所下降。
说明统计更新对提高函数索引的性能是有一定的帮助的。
- 函数索引与统计更新
- Oracle统计信息(表、索引)更新
- oracle重建、更新索引、索引统计信息命令
- MySQL索引统计信息更新相关的参数
- matlab统计相关函数(不定时更新)
- Mysql更新,删除与索引(五)
- 统计函数与分组查询
- -------------SQL SERVER与DB2统计信息与索引碎片整理---------------
- 索引更新
- 索引更新
- SQL Server索引统计信息未及时更新,导致排序混乱
- SQL2008R2的 遍历所有表更新统计信息和索引重建
- 基础知识之expdp与impdp是否更新统计信息
- solr索引分发处理以及搜索的更新与替换
- git原理与实践知识索引——持续更新
- 函数索引与虚拟列的比较
- oracle索引统计
- 数据库索引统计信息
- MyEclipse插件--SVN升级
- ubuntu10.10下,搭建Android SDK/NDK开发环境
- Squirrel文档翻译(内置函数-全局变量和函数)
- 路由下一跳为接口 或 IP地址的区别
- 一位技术人员成长的烦恼及我的分析
- 函数索引与统计更新
- 线程中调用CreateProcess 的问题。
- [最新答案V0.3版]微软等数据结构+算法面试100题[第21-40题答案]
- 种瓜得豆(12)
- 前自增和后自增运算符的重载
- DLL劫持漏洞技术原理
- J2ME应用程序开发奇技淫巧(上)
- J2ME应用程序开发奇技淫巧(下)
- 在MSSQL中如何用SQL清除所有表的数据