oracle聚簇因子对查询性能的影响

create table t0

(

sid int not null ,

sname varchar2(20)

)

tablespace test;

--循环导入数据

declare

       maxrecords constant int:=100000;

       i int :=1;

   begin

       for i in 1..maxrecords loop

         insert into t0 values(i,'ocpyang'||i);

       end loop;

   dbms_output.put_line(' 成功录入数据! ');

   commit;

   end;

/

create table t1

as

select sid,sname from t0 order by sname desc;

create index index_t1 on t1(sid);

create table t2

as

select sid,sname from t0 order by sid  asc;

create index index_t2 on t2(sid asc);

--分析两张表及其索引

EXEC DBMS_STATS.gather_table_stats(USER, 'T1');

EXEC DBMS_STATS.gather_table_stats(USER, 'T2');

EXEC DBMS_STATS.gather_index_stats(USER, 'INDEX_T1');

EXEC DBMS_STATS.gather_index_stats(USER, 'INDEX_T2');

---比较同一个查询

set autot traceonly stat;

SELECT * FROM t1 WHERE sid BETWEEN 100 AND 120;

统计信息

----------------------------------------------------------

         5  recursive calls

         4  db block gets

        15  consistent gets  一致读

         0  physical reads

       540  redo size

      1240  bytes sent via SQL*Net to client

       530  bytes received via SQL*Net from client

         3  SQL*Net roundtrips to/from client

         0  sorts (memory)

         0  sorts (disk)

        21  rows processed

SELECT * FROM t2 WHERE sid BETWEEN 100 AND 120;

统计信息

----------------------------------------------------------

         6  recursive calls

         4  db block gets

         9  consistent gets  一致读

         0  physical reads

       540  redo size

      1240  bytes sent via SQL*Net to client

       530  bytes received via SQL*Net from client

         3  SQL*Net roundtrips to/from client

         0  sorts (memory)

         0  sorts (disk)

        21  rows processed

set autotrace off;

时间: 2024-11-05 12:26:52

oracle聚簇因子对查询性能的影响的相关文章

Oracle聚簇因子(Clustering factor,CF)

Oracle 聚簇因子(Clustering factor)   聚簇因子是 Oracle 统计信息中在CBO优化器模式下用于计算cost的参数之一,决定了当前的SQL语句是否走索引,还是全表扫描以及是否作为嵌套连接外部表等.如此这般,那到底什么是聚簇因子,那些情况下会影响到聚簇因子,以及如何提高聚簇因子?本文将对此展开描述.   1.堆表的存储方式    Oralce 数据库系统中最普通,最为常用的即为堆表.     堆表的数据存储方式为无序存储,也就是任意的DML操作都可能使得当前数据块存在

Oracle聚簇因子

1.聚簇因子(clustering_factor):是使用B树索引进行区间扫描的成本很重要因素,反映数据在表中分布的随机程度 2.聚簇因子的计算方法: ①扫描索引 ②比较某行的ROWID和前一行的ROWID,如果这两个ROWID不属于同一个数据块,那么聚簇因子增加1  --对选择最优查询路径影响最大的只有列的选择率和聚簇因子 3.实验测试 create table t1 as select trunc((rownum-1)/100) id, rpad(rownum,100) t_pad from

Oracle的分区表和聚簇表

在什么情况下使用聚簇表?是否对比过分区表和聚簇表的性能? 1.所谓聚簇就是指以某个列为基准,把拥有相同聚簇键值的所有行都存储在相同位置上的物理储储方法.把多个表中拥有相同聚簇值的行集中存储在连续位置上的做法,意味着把需要执行表连接的行提前集中存储在了一起,从而能够显著地降低表连接时的数据运输单价. 2.聚簇分为两种: (1)利用聚簇索引来查找数据的聚簇类型称为索引聚簇 (2)利用hash函数来查找数据的聚簇类型称为hash聚簇也称为散列聚簇(注只适合"="相等比较运算符来读取数据) 从

从数据仓库物理设计分析影响查询性能的三项关键技术

实例演示采用 IBM BCU 设计 架构,以基准测试 TPC-H 为数据源(300GB 数据量)和测试案例,展示了"三驾马车" 对查询性能的拉动效果.无论是在 POC 测试还是在现实生产系统中,查询性能都是 客户非常关注的重要指标.通过本文,读者可以充分了解"三驾马车"的奥秘所在, 文中的实例演示对读者有借鉴和参考意义. 在http://www.aliyun.com/zixun/aggregation/8302.html">数据仓库领域中,无论是在生

Sql Server查询性能优化之不可小觑的书签查找介绍_MsSql

小小程序猿SQL Server认知的成长 1.没毕业或工作没多久,只知道有数据库.SQL这么个东东,浑然分不清SQL和Sql Server Oracle.MySql的关系,通常认为SQL就是SQL Server 2.工作好几年了,也写过不少SQL,却浑然不知道索引为何物,只知道数据库有索引这么个东西,分不清聚集索引和非聚集索引,只知道查询慢了建个索引查询就快了,到头来索引也建了不少,查询也确实快了,偶然问之:汝建之索引为何类型?答曰:... 3.终于受到刺激开始奋发图强,买书,gg查资料终于知道

Sql Server查询性能优化之不可小觑的书签查找介绍

小小程序猿SQL Server认知的成长 1.没毕业或工作没多久,只知道有数据库.SQL这么个东东,浑然分不清SQL和Sql Server Oracle.MySql的关系,通常认为SQL就是SQL Server 2.工作好几年了,也写过不少SQL,却浑然不知道索引为何物,只知道数据库有索引这么个东西,分不清聚集索引和非聚集索引,只知道查询慢了建个索引查询就快了,到头来索引也建了不少,查询也确实快了,偶然问之:汝建之索引为何类型?答曰:... 3.终于受到刺激开始奋发图强,买书,gg查资料终于知道

数据仓库中拉动查询性能的三驾马车

前言 在数据仓库领域中,无论是在生产系统中,还是 POC(Proof Of Concept) 性能测试,查询性能对于客户来说都是非常重要的性能指标.良好的查询性能 为各类数据仓库应用的高效作业奠定了基础.而对于查询性能来说,众所周知, 其主要性能瓶颈来自于系统 I/O,因此本文从数据仓库物理设计的角度出发, 阐述了影响查询性能的三项关键技术,并以基准测试 TPC-H 进行了实例演示, 展示性能提升的效果. 关于分区数据库,表分区和多维集群(MDC),developerWorks 上已经有 很多优

Oracle数据库索引聚簇与哈希聚簇使用指南

索引聚簇的使用: ◆对经常在连接语句中访问的表建立聚簇. ◆假如表只是偶尔被连接或者它们的公共列经常被修改,则不要聚簇表.(修改记录的聚簇键值比在 非聚簇的表中修改此值要花费更多的时间,因为Oracle必须将修改的记录移植到其他的块中以维护聚簇) . ◆假如经常需要在一个表上进行完全搜索,则不要聚簇这个表(对一个聚簇表进行完全搜索比在非聚 簇表上进行完全搜索的时间长,Oracle可能要读更多的块,因为表是被一起存储的). ◆假如经常从一个父表和相应的子表中查询记录,则考虑给1对多(1:*)关系创

oracle点知识8——索引聚簇和哈希聚簇

原文整理自网络: Oracle支持两种类型的聚簇: 索引聚簇和哈希聚簇 1. 什么是聚簇 聚簇是根据码值找到数据的物理存储位置,从而达到快速检索数据的目的.聚簇索引的顺序就是数据的物理存储顺序,叶节点就是数据节点.非聚簇索引的顺序与数据物理排列顺序无关,叶节点仍然是索引节点,只不过有一个指针指向对应的数据块.一个表最多只能有一个聚簇索引. 2. 使用 Oracle 聚簇索引 聚簇是一种存储表的方法,这些表密切相关并经常一起连接进磁盘的同一区域.例如,表 BOOKSHELF 和BOOKSHELF_