- 浏览: 361393 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (176)
- struts2 (4)
- javascript (9)
- database (11)
- hibernate (11)
- java (36)
- CSS (1)
- wap (8)
- html (5)
- spring (3)
- 操作系统 (9)
- xml (0)
- eclipse/myeclipse (6)
- freemarker (2)
- jsp+servlet (4)
- fckeditor (1)
- Linux (12)
- tomcat (4)
- SNMP (2)
- Loadrunner (1)
- php (0)
- 版本控制 (1)
- android (3)
- pki (7)
- jquery (4)
- webservice (4)
- ipad (1)
- 开发工具 (1)
- jslt (1)
- 连接池 (6)
- javaApi (1)
- 学习笔记 (6)
- eclipse (2)
最新评论
-
宋建勇:
nice
keytool详解 -
1122334455aabb:
java int,byte、char之间的相互转化,更多内容参 ...
java中byte 与16进制字符相互转换 -
01jiangwei01:
CA[i >>> 18 & 0x3f ...
使用JAVA数字证书做数字签名认证 -
sjp524617477:
good
keytool详解 -
whlngn:
输出结果我只想取汉字,而不要后面的数字,应该如何实现,求回答
配置paoding analysis
关于全局索引和本地索引的优缺点,分别应该在什么情况下使用,这方面的资料很多,本文不作讨论。本文讨论一种特殊情况,即建立在分区键之上的本地索引。9i也算是很老的Oracle版本了,只是很多系统包括很多大型的核心的系统都在用,因此本文介绍建立在分区键列上的本地索引存在的问题。下面是一些测试:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1 1 SQL> create table t1 ( a int, b varchar2(300)) partition by range(a)
2 2 (
3 3 partition p01 values less than (1000),
4 4 partition p02 values less than (2000),
5 5 partition p03 values less than (3000),
6 6 partition p04 values less than (4000),
7 7 partition p05 values less than (5000),
8 8 partition p06 values less than (6000),
9 9 partition p07 values less than (7000),
10 10 partition p08 values less than (8000),
11 11 partition p09 values less than (9000),
12 12 partition p10 values less than (10000),
13 13 partition p11 values less than (11000),
14 14 partition p12 values less than (12000),
15 15 partition p13 values less than (13000),
16 16 partition p14 values less than (14000),
17 17 partition p15 values less than (15000),
18 18 partition p16 values less than (16000),
19 19 partition p17 values less than (17000),
20 20 partition p18 values less than (18000),
21 21 partition p19 values less than (19000),
22 22 partition p20 values less than (20000)
23 23 )
24 24 /
25
26 表已创建。
27
28 SQL> insert into t1 select rownum,lpad('x',200,'x') from dual connect by rownum<20000;
29
30 已创建19999行。
31
32 SQL> commit;
33
34 提交完成。
35
36 SQL> insert /*+ append */ into t1 select * from t1;
37
38 已创建19999行。
39
40 SQL> commit;
41
42 提交完成。
43
44 SQL> insert /*+ append */ into t1 select * from t1;
45
46 已创建39998行。
47
48 SQL> commit;
49
50 提交完成。
51
52 SQL> insert /*+ append */ into t1 select * from t1;
53
54 已创建79996行。
55
56 SQL> commit;
57
58 提交完成。
59
60 SQL> insert /*+ append */ into t1 select * from t1;
61
62 已创建159992行。
63
64 SQL> commit;
65
66 提交完成。
67
68 SQL> insert /*+ append */ into t1 select * from t1;
69
70 已创建319984行。
71
72 SQL> commit;
73
74 提交完成。
2 2 (
3 3 partition p01 values less than (1000),
4 4 partition p02 values less than (2000),
5 5 partition p03 values less than (3000),
6 6 partition p04 values less than (4000),
7 7 partition p05 values less than (5000),
8 8 partition p06 values less than (6000),
9 9 partition p07 values less than (7000),
10 10 partition p08 values less than (8000),
11 11 partition p09 values less than (9000),
12 12 partition p10 values less than (10000),
13 13 partition p11 values less than (11000),
14 14 partition p12 values less than (12000),
15 15 partition p13 values less than (13000),
16 16 partition p14 values less than (14000),
17 17 partition p15 values less than (15000),
18 18 partition p16 values less than (16000),
19 19 partition p17 values less than (17000),
20 20 partition p18 values less than (18000),
21 21 partition p19 values less than (19000),
22 22 partition p20 values less than (20000)
23 23 )
24 24 /
25
26 表已创建。
27
28 SQL> insert into t1 select rownum,lpad('x',200,'x') from dual connect by rownum<20000;
29
30 已创建19999行。
31
32 SQL> commit;
33
34 提交完成。
35
36 SQL> insert /*+ append */ into t1 select * from t1;
37
38 已创建19999行。
39
40 SQL> commit;
41
42 提交完成。
43
44 SQL> insert /*+ append */ into t1 select * from t1;
45
46 已创建39998行。
47
48 SQL> commit;
49
50 提交完成。
51
52 SQL> insert /*+ append */ into t1 select * from t1;
53
54 已创建79996行。
55
56 SQL> commit;
57
58 提交完成。
59
60 SQL> insert /*+ append */ into t1 select * from t1;
61
62 已创建159992行。
63
64 SQL> commit;
65
66 提交完成。
67
68 SQL> insert /*+ append */ into t1 select * from t1;
69
70 已创建319984行。
71
72 SQL> commit;
73
74 提交完成。
首先建立一个测试范围分区表,分区键列是”a”,共20个分区,在这个测试表中生成约64万行数据。下面在列a上建本地索引并收集统计信息:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1 SQL> create index t1_idx on t1(a) local;
2
3 索引已创建。
4
5 SQL> exec dbms_stats.gather_table_stats(user,'T1',
6 method_opt=>'for all columns size 1',cascade=>true);
7
8 PL/SQL 过程已成功完成。
9 SQL> @sosi
10
11 Please enter Name of Table Owner (Null = TEST):
12 Please enter Table Name to show Statistics for: t1
13
14 ***********
15 Table Level
16 ***********
17
18 Table Number Empty
19 Name of Rows Blocks Blocks
20 --------------- -------------- -------- ------------
21 T1 639,968 18,880 0
22
23 Column Column Distinct Number Number
24 Name Details Values Density Buckets Nulls
25 ------------------------- ------------------------ ------------ --------- ------- ------------
26 A NUMBER(22) 19,999 .000050 1 0
27 B VARCHAR2(300) 1 1.000000 1 0
28
29 B
30 Index Tree Leaf Distinct Number Cluster
31 Name Unique Level Blks Keys of Rows Factor
32 --------------- --------- ----- -------- -------------- -------------- ------------
33 T1_IDX NONUNIQUE 1 1,390 19,999 639,968 639,968
34
35 Index Column Col Column
36 Name Name Pos Details
37 --------------- ------------------------- ---- ------------------------
38 T1_IDX A 1 NUMBER(22)
39
40 ***************
41 Partition Level
42 ***************
43
44 Part Partition Number Empty
45 Pos Name of Rows Blocks Blocks
46 ------ --------------- -------------- -------- ------------
47 1 P01 31,968 944 0
48 2 P02 32,000 944 0
49 3 P03 32,000 944 0
50 4 P04 32,000 944 0
51 5 P05 32,000 944 0
52 6 P06 32,000 944 0
53 7 P07 32,000 944 0
54 8 P08 32,000 944 0
55 9 P09 32,000 944 0
56 10 P10 32,000 944 0
57 11 P11 32,000 944 0
58 12 P12 32,000 944 0
59 13 P13 32,000 944 0
60 14 P14 32,000 944 0
61 15 P15 32,000 944 0
62 16 P16 32,000 944 0
63 17 P17 32,000 944 0
64 18 P18 32,000 944 0
65 19 P19 32,000 944 0
66 20 P20 32,000 944 0
67 B
68 Index Partition Tree Leaf Distinct Number
69 Name Name Level Blks Keys of Rows
70 --------------- --------------- ----- -------- -------------- --------------
71 T1_IDX P01 1 67 999 31,968
72 T1_IDX P02 1 67 1,000 32,000
73 T1_IDX P03 1 67 1,000 32,000
74 T1_IDX P04 1 67 1,000 32,000
75 T1_IDX P05 1 67 1,000 32,000
76 T1_IDX P06 1 67 1,000 32,000
77 T1_IDX P07 1 67 1,000 32,000
78 T1_IDX P08 1 67 1,000 32,000
79 T1_IDX P09 1 67 1,000 32,000
80 T1_IDX P10 1 67 1,000 32,000
81 T1_IDX P11 1 72 1,000 32,000
82 T1_IDX P12 1 72 1,000 32,000
83 T1_IDX P13 1 72 1,000 32,000
84 T1_IDX P14 1 72 1,000 32,000
85 T1_IDX P15 1 72 1,000 32,000
86 T1_IDX P16 1 72 1,000 32,000
87 T1_IDX P17 1 72 1,000 32,000
88 T1_IDX P18 1 72 1,000 32,000
89 T1_IDX P19 1 72 1,000 32,000
90 T1_IDX P20 1 72 1,000 32,000
2
3 索引已创建。
4
5 SQL> exec dbms_stats.gather_table_stats(user,'T1',
6 method_opt=>'for all columns size 1',cascade=>true);
7
8 PL/SQL 过程已成功完成。
9 SQL> @sosi
10
11 Please enter Name of Table Owner (Null = TEST):
12 Please enter Table Name to show Statistics for: t1
13
14 ***********
15 Table Level
16 ***********
17
18 Table Number Empty
19 Name of Rows Blocks Blocks
20 --------------- -------------- -------- ------------
21 T1 639,968 18,880 0
22
23 Column Column Distinct Number Number
24 Name Details Values Density Buckets Nulls
25 ------------------------- ------------------------ ------------ --------- ------- ------------
26 A NUMBER(22) 19,999 .000050 1 0
27 B VARCHAR2(300) 1 1.000000 1 0
28
29 B
30 Index Tree Leaf Distinct Number Cluster
31 Name Unique Level Blks Keys of Rows Factor
32 --------------- --------- ----- -------- -------------- -------------- ------------
33 T1_IDX NONUNIQUE 1 1,390 19,999 639,968 639,968
34
35 Index Column Col Column
36 Name Name Pos Details
37 --------------- ------------------------- ---- ------------------------
38 T1_IDX A 1 NUMBER(22)
39
40 ***************
41 Partition Level
42 ***************
43
44 Part Partition Number Empty
45 Pos Name of Rows Blocks Blocks
46 ------ --------------- -------------- -------- ------------
47 1 P01 31,968 944 0
48 2 P02 32,000 944 0
49 3 P03 32,000 944 0
50 4 P04 32,000 944 0
51 5 P05 32,000 944 0
52 6 P06 32,000 944 0
53 7 P07 32,000 944 0
54 8 P08 32,000 944 0
55 9 P09 32,000 944 0
56 10 P10 32,000 944 0
57 11 P11 32,000 944 0
58 12 P12 32,000 944 0
59 13 P13 32,000 944 0
60 14 P14 32,000 944 0
61 15 P15 32,000 944 0
62 16 P16 32,000 944 0
63 17 P17 32,000 944 0
64 18 P18 32,000 944 0
65 19 P19 32,000 944 0
66 20 P20 32,000 944 0
67 B
68 Index Partition Tree Leaf Distinct Number
69 Name Name Level Blks Keys of Rows
70 --------------- --------------- ----- -------- -------------- --------------
71 T1_IDX P01 1 67 999 31,968
72 T1_IDX P02 1 67 1,000 32,000
73 T1_IDX P03 1 67 1,000 32,000
74 T1_IDX P04 1 67 1,000 32,000
75 T1_IDX P05 1 67 1,000 32,000
76 T1_IDX P06 1 67 1,000 32,000
77 T1_IDX P07 1 67 1,000 32,000
78 T1_IDX P08 1 67 1,000 32,000
79 T1_IDX P09 1 67 1,000 32,000
80 T1_IDX P10 1 67 1,000 32,000
81 T1_IDX P11 1 72 1,000 32,000
82 T1_IDX P12 1 72 1,000 32,000
83 T1_IDX P13 1 72 1,000 32,000
84 T1_IDX P14 1 72 1,000 32,000
85 T1_IDX P15 1 72 1,000 32,000
86 T1_IDX P16 1 72 1,000 32,000
87 T1_IDX P17 1 72 1,000 32,000
88 T1_IDX P18 1 72 1,000 32,000
89 T1_IDX P19 1 72 1,000 32,000
90 T1_IDX P20 1 72 1,000 32,000
下面执行查询:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1 SQL> set arraysize 1000
2 SQL> set autot traceonly
3 SQL> select * from t1 where a=1000;
4
5 已选择32行。
6
7 Execution Plan
8 ----------------------------------------------------------
9 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=33 Card=32 Bytes=652
10 8)
<span st
2 SQL> set autot traceonly
3 SQL> select * from t1 where a=1000;
4
5 已选择32行。
6
7 Execution Plan
8 ----------------------------------------------------------
9 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=33 Card=32 Bytes=652
10 8)
<span st
发表评论
-
group by rollup
2011-05-19 15:10 1287首先引用ITPUB上的总结: rollup(a,b,c)-- ... -
oracle 树状查询
2011-02-15 16:11 1781oracle中的select语句可以用START WITH.. ... -
Oracle使用序列创建自增字段
2011-01-25 11:04 1429在Oracle中sequence就是所谓的序列号,每次取的时候 ... -
【字符集】处理Toad显示乱码及Windows XP下无法插入“某些汉字”问题
2010-11-01 13:14 2703在数据库服务器字符集 ... -
oracle 常用语句
2010-10-27 15:24 738查看 死锁 select username,lockw ... -
关于 db block gets,consistent gets,physical reads的概念
2010-08-17 16:57 1587首先来看下官方文档的解释 db block gets:Num ... -
oralce分区表和索引
2010-08-14 17:39 1360什么时候使用分区: 1、 大数据量的表,比如大于2G ... -
oracle表分区详解
2010-08-14 17:19 782此文从以下几个方面来 ... -
Oracle 数据库分区表的创建和操作
2010-08-14 08:56 2170摘要 :在大量业务数据处理的项目中,可以考虑使用分区表来提高 ... -
mysql 数据类型java类型对照
2009-06-10 21:56 1758类型名称 显示长度 数据库类型 JAVA类型 JD ...
相关推荐
### 分区索引—本地索引与全局索引的区别 #### 一、Oracle分区索引概念及分类 在Oracle数据库中,分区索引是针对分区表的一种特殊索引类型,它可以显著提高对于大规模数据集的查询性能。根据索引是否与表的分区...
Oracle 索引与分区索引介绍 Oracle 索引与分区索引是 Oracle 数据库中两个重要的概念,它们都是为了提高查询性能和数据存储效率而设计的。在本文中,我们将详细介绍 Oracle 索引与分区索引的概念、特点、分类、创建...
Oracle 分区表分区索引详解 Oracle 分区表分区索引是 Oracle 数据库中的一种重要机制,它可以提高数据的存储和查询效率。下面将详细介绍 Oracle 分区表分区索引的类型、分类、创建方法和维护方式。 一、分区表和...
针对分区表,Oracle 提供了分区索引,它允许索引与分区策略相结合。例如,可以创建局部索引,每个分区都有自己的索引,或者创建全局索引,覆盖所有分区。局部索引通常在查询性能上有优势,而全局索引则适用于跨分区...
### Oracle 分区表与分区索引详解 #### 一、Oracle分区概述 在Oracle数据库中,分区技术是一种非常有效的管理大型表和索引的方法。通过将一个大的表或索引分成多个较小的部分(分区),可以显著提高查询性能,并...
Oracle 分区表及分区索引 Oracle 分区表是指将一个大表分割成多个小表,每个小表称为一个分区,分区表的优点是可以提高查询性能、改善管理型、增强容错性等。 分区表的分类: 1. 范围分区(Range Partitioning) ...
以下是对Oracle分区表和分区索引的深入解析: 1. **何时使用分区**: - 当表的数据量超过2GB时,分区有助于避免32位操作系统下的文件大小限制,同时减少大规模数据的备份时间。 - 对于包含历史数据的表,如按月份...
虽然存储介质和数据处理技术的发展也很快,但是仍然不能满足用户的需求,为了使用户的大量的数据在读写操作和查询中速度更快,Oracle提供了对表和索引进行分区的技术,以改善大型应用系统的性能。
### Oracle 分区与索引详解 #### 一、Oracle 分区概述 在Oracle数据库中,分区是一种物理数据组织技术,它将一个大的表或索引分成多个较小的部分,每个部分都可以独立管理。通过分区,可以显著提高查询性能,简化...
局部索引一定是分区索引,分区键等同于表的分区键,分区数等同于表的分区数,一句话,局部索引的分区机制和表的分区机制一样。2.如果局部索引的索引列以分区键开头,则称为前缀局部索引。3.如果局部索引的列不是以...
"Oracle分区表和分区索引在VLDB中的研究" 本文研究了Oracle分区表和分区索引在VLDB(Very Large Databases)中的应用。分区表和分区索引是数据库管理中的关键技术之一,是VLDB中一个重要的性能提升机制。通过分析一...
### 全局索引与本地索引 - **全局索引**:独立于表的分区结构,适用于需要覆盖整个表的索引查询。维护全局索引通常需要额外的操作。 - **本地索引**:索引的分区与表的分区保持一致,适用于大多数情况下的查询。维护...
Oracle分区技术是一种数据库管理系统(DBMS)特性,用于将大型表和索引分割成更小、更易管理和处理的部分,从而提升查询性能和数据管理效率。这种技术特别适用于数据仓库和决策支持系统(DSS),因为这些系统通常...
分区索引与表分区相对应,而全局索引则跨越所有分区。非分区表可以拥有分区或非分区索引,但分区表必须至少有一个分区键,最多可包含16个列,这些列可以是可为空的。 在应用分区时,重要的是保持分区的逻辑一致性,...
Oracle 的分区技术是一种用于管理和优化超大型表和索引的有效手段。通过将一个大型的表或者索引分割成多个较小且可管理的部分,分区技术能够显著提升数据库的性能、可用性和可维护性。 ##### 分区的作用: 1. **...
分区索引示例.sql"探讨了与分区相关的索引策略。在分区表上创建索引可以进一步提升查询效率,因为索引也可以被分区。全局索引覆盖所有分区,而局部索引仅针对单个或一组分区。选择哪种类型的索引取决于查询模式和...