oracle-数据库08

本文介绍了哈希函数在形成查询索引中的作用,以及分区表的概念,重点讲解了range、list、hash和复合分区的原理和应用场景,以提升数据库操作效率。
摘要由CSDN通过智能技术生成

学习无止境,还有许多东西需要我们了解,今天来了解一些稍微少见的知识。

哈希(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结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值