荥阳企业网站建设,网页设计实训总结ppt,屏蔽wordpress缩略图,品牌网站建设报价欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享#xff0c;与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习#xff0c;有基础也有进阶#xff0c;有MySQL也有Oracle 分区表 • Oracle版 前言一、分区表1.什么是表分区… 欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习有基础也有进阶有MySQL也有Oracle 分区表 • Oracle版 前言一、分区表1.什么是表分区1.1 分区的意义1.2 分区的作用1.3 表分区的方法 2.创建分区表2.1 创建范围分区表2.1.1 基本语法2.1.2 示例 2.2 创建列表分区表2.2.1 基本语法2.2.2 示例 小结 前言 ✅对于表分区这块内容我们在MySQL方面已经有五篇内容了大家可以去我的专栏SQL应知应会进行学习 今天这篇内容开始Oracle的表分区如果大家学习过前面MySQL的表分区的话那么对于今天的内容是很轻松就可以学会的当然这并没有严格的学习顺序的安排只是对于MySQL的表分区我们花了大量的篇幅进行学习大家可以根据自己的学习情况进行随意的选择学习顺序(无需有过多的顾虑) ✳️今天这篇Oracle主要是对建立表分区进行了学习比如创建范围分区表、创建列表分区表一系列知识点其中有代码帮助大家去学习与理解要 注意Oracle与MySQL的区别在列表分区表就有所体现大家可以自己在Navicar或者PL/SQL或者其他工具上进行代码的学习 最好不要只看懂文章只有多多练习才能发现自己的错误并锻炼解决问题的能力。 希望文章的内容对大家有所帮助如果有什么不足的地方大家可以在评论区或者私信我感谢大家的支持 那么快拿出你的电脑跟着文章一起学习起来吧 一、分区表
1.什么是表分区
在oracle数据库中当表中数据量达到GB级别时为了方便对表中数据的管理可以考虑将表进行分区。所谓分区就是将一个巨型表分成若干个独立的组成部分进行存储和管理每个相对小的、可以独立管理的部分称为原来表的分区。表分区后可以对表的分区进行独立的存取和控制。每个分区都具有相同的逻辑属性但物理属性可以不同 如 具有相同列、相同数据类型、相同约束等但可以具有不同的存储参数、位于不同的表空间中 1.1 分区的意义
学习多表关联的时候 两个表关联的时候对于关联不上的数据使用null填充这种关联相当于关联的时候还是要找A的每条数据都要去B里所有数据遍历一遍效率较慢常见的有些连接算法可以用join也并不是A中的一条数据与B中所有数据关联如果有分区的话是最明显的优化分区与分区的数据进行关联这种关联只能发生在等值关联所以做SQL的等值判断效率是最高的使用大于()、小于()、not in这些的效率都不是很高而in或等值连接或者多加几个分区(让扫描到更少的分区来提升效率)
1.2 分区的作用
增强可用性如果表的某个分区出现故障表在其他分区的数据仍然可用维 护 方 便如果表的某个分区出现故障需要修复数据只修复该分区即可 如运行时网络中断导致数据出问题 均 衡 I/O可以把不同的分区映射到磁盘以平衡I/O改善整个系统性能改善查询性能对分区对象的查询可以仅搜索自己关心的分区提高检索速度 对巨型表进行分区具有下列优点 提高 数据的安全性一个分区的损坏不影响其他分区中数据的正常使用将表的各个分区存储在不同磁盘上提高数据的并行操作能力简化数据的管理可以将某些分区设置为不可用状态某些分区设置为可用状态某些分区设置为只读状态某些分区设置为读/写状态操作的透明性对表进行分区并不影响操作数据的SQL语句。 1.3 表分区的方法
在oracle 11g数据库中对表进行分区有多种方法。 范围分区range 根据分区列值的范围对表进行分区每条记录根据其分区列值所在的范围决定存储到哪个分区中 范围分区是最常用的分区方法特别适合根据日期进行分区的情况。 列表分区(list)如果分区列的值不能划分范围非数值类型或日期类型同时分区列的取值是一个包含少数值的集合可以采用列表分区将特定分区列值的记录保存到特定分区中。散列分区又称HASH分区是采用基于分区列值的HASH算法将数据均匀分布到指定的分区中 一个记录到底分布到哪个分区是由HASH函数决定的。 复合分区(range—list,range--hash)结合两种基本分区方法先采用一个分区方法对表或索引进行分区然后再采用另一个分区方法将分区再分成若干个子分区。每个分区的子分区都是数据的一个逻辑子集。 复合分区包括范围-范围复合分区、范围-散列复合分区、范围-列表复合分区、列表-范围复合分区、列表-散列复合分区、列表-列表复合分区等多种分区方法 在oracle 11g数据库中分区技术得到进一步的增强引入了间隔分区、引用分区、基于虚拟列分区以及系统分区system Partitioning)等多种分区方法 2.创建分区表
2.1 创建范围分区表
2.1.1 基本语法
使用带 partition by range子句的 create table 语句创建范围分区表
CREATE TABLE table(...)
PARTITION BY RANGE (column1[,column2,...])
(PARTITION partition1 VALUES LESS THAN(literal|MAXVALUE)
[TABLESPACE tablespace]
[,PARTITION partition2 VALUES LESS THAN(literal|MAXVALUE)
[TABLESPACE tablespace],...]
)
...# PARTITION BY RANGE : 指明采用范围分区方法
# column : 分区列可以是单列分区也可以是多列分区
# PARTITION partition1 : 设置分区名称
# VALUES LESS THAN : 设置分区列值得上界
# TABLESPACE : 设置分区对应的表空间## 分区列可以是多列叫作组合字段分区
## 少用LESS THAN(MAXVALUE)2.1.2 示例
创建一个分区表将学生信息根据其出生日期进行分区 将1980年1月1日前出生的学生信息保存在ORCLTBS1表空间中将1980年1月1日到1990年1月1日出生的学生信息保存在ORCLTBS2表空间中将其他学生信息保存在ORCLTBS3表空间中
CREATE TABLE student_range(sno NUMBER(6) PRIMARY KEY,sname VARCHAR2(10),sage int,birthday DATE
)
PARTITION BY RANGE(birthday)
(PARTITION p1 VALUES LESS THAN(TO_DATE(1980-1-1,YYYY-MM-DD)) TABLESPACE ORCLTBS1,PARTITION p2 VALUES LESS THAN(TO_DATE(1990-1-1,YYYY-MM-DD)) TABLESPACE ORCLTBS2,PARTITION p1 VALUES LESS THAN(MAXVALUE) TABLESPACE ORCLTBS3,
);创建分区表后通过修改分区表的各个分区所在的表空间的状态可以实现对表分区的不同操作 可以将表的部分分区设置为脱机状态或只读状态但不影响其他分区的使用 2.2 创建列表分区表
2.2.1 基本语法
使用带 PARTITION BY LIST子句的 CREATE TABLE语句创建列表分区表基本语法
Oracle的list分区values后没有inMySQL的list分区values后有in
CREATE TABLE table(...)
PARTITION BY LIST (column)
(PARTITION partition1 VALUES(literal|NULL|[DEFAULT])
[TABLESPACE tablespace]
[,PARTITION partition2 VALUES(literal|NULL|[DEFAULT])
[TABLESPACE tablespace],...]
)2.2.2 示例
创建一个分区表将学生信息按性别不同进行分区 男学生信息保存在ORCLTBS1表空间中将女学生信息保存在ORCLTBS2表空间中
CREATE TABLE student_list(sno NUMBER(6) PRIMARY KEY,sname VARCHAR2(10),sage int,sex VARCHAR(2) CHECK(sex in (M,F))
)
PARTITION BY LIST(sex)
(PARTITION student_male VALUES(M) TABLESPACE ORCLTBS1,PARTITION student_female VALUES(F) TABLESPACE ORCLTBS2
);小结 感谢大家耐心的看完这篇文章这篇文章是Oracle的表分区对于SQL在表分区的知识点我们在MySQL方面已经有五篇内容了大家可以去我的专栏SQL应知应会 进行学习如果大家觉着还算可以那么就给个三连支持一下吧 也可以加入我的社区一起学习呀 ✅如果想要继续关注和学习后续更多的内容那就关注一下爱书不爱输的程序猿吧当然如果大家还有什么其他方面的知识点想要看可以在评论区或者私信我