学习无止境,还有许多东西需要我们了解,今天来了解一些稍微少见的知识。
哈希(hash)函数,听上去很高级,实际上用于形成查询索引的函数,可以大大提高我们的操作效率。这要从分区表开始说起。
一、介绍
分区表就是将基本表按条件分区域,就是说我们表面上看到的表还是一张完整的表,但它在电脑系统中被分成了许多物理的区域
优点:
- 分区表可以实现分区域管理操作
- 在执行同样的操作语句时能够提高执行效率
原理:
如图,比如我们要查表,正常应该是遍历该表,但如果条件涉及划分区域的条件,可以直接从该区域找。
分区原理
如图,原表S列分别有三类数据S1、S2、S3,根据该列数据分成P1、P2、P3三个区,若我要查找s=S1,则直接会在P1中找。
注意:一般表内数据不会像图中这样分好类,而是打乱。
二、分类介绍
分区表主要分为range范围分区,list列表分区,hash哈希分区和复合分区四种。
分区分类
1、range 范围分区
create table t1(
id number(10) primary key,
name varchar(20),
sex char(5),
city varchar(20),
age number(3))
partition by range(age)(
partition p1_name values less than (12),
partition p2_name values less than (18),
partition p3_name values less than (maxvalue));
- create table:就是创建表
- partition by 分区标准(某一字段):选择分区方式以及对象字段
- partition 区域名 values 条件:在范围分区中用less than进行划分,表示当前最小值到设定值。
如上例,分区为(-无穷,12),[12,18),[18,+无穷),其中maxvalue表示最大值,一般最后一组为默认值组。
结果为:
2、list 列表分区
--建表部分略
partition by list(sex)(
partition p1_name values ('男'),
partition p2_name values ('女'),
partition p3_name values (default));
- partition by 分区标准(某一字段)
- partition 区域名 values 条件:在列表分区中按固定值进行划分,不同值处在不同区域,其中default为默认值,当值均不为上述值时分到该组
3、hash 哈希分区
partition by hash(name)(
partition p1_name,
partition p2_name,
partition p3_name);
- partition by 分区标准(某一字段)
- partition 区域名:在哈希分区中系统将根据字段中的内容,几乎均匀地分成多组,但是不能明确内容具体在哪个组,不太容易进行管理
4、复合分区
用于双层分区的情况,分区再分区。这里共有range-hash、range-list两种分区
(1)range-hash 范围哈希分区
partition by range(age)
subpartition by list(sex)(
partition p1_name values less than (12)(
subpartition s1_name values ('男'),
subpartition s2_name values ('女')),
partition p2_name values less than (18)(
subpartition s3_name values ('男'),
subpartition s4_name values ('女')),
partition p3_name values less than (maxvalue)(
subpartition s5_name values ('男'),
subpartition s6_name values ('女')));
(2)range-list 范围列表分区
08结