【SQL应知应会】表分区(二)• Oracle版

简介: 【SQL应知应会】表分区(二)• Oracle版

前言

✅对于表分区这块内容,我们在MySQL方面已经有五篇内容了,大家可以去我的专栏SQL应知应会进行学习

🆗前面也有过Oracle的表分区的开篇了,今天这篇内容,继续Oracle的表分区,如果大家学习过前面MySQL的表分区的话,那么对于今天的内容是很轻松就可以学会的,当然,这并没有严格的学习顺序的安排,只是对于MySQL的表分区,我们花了大量的篇幅进行学习,大家可以根据自己的学习情况进行随意的选择学习顺序(无需有过多的顾虑)

✳️今天这篇主要讲了如何创建散列分区表,其中有两种方法分别在两个例子中进行了使用,然后就是讲了创建复合分区表,包括范围-列表复合分区与范围-散列复合分区

希望文章的内容对大家有所帮助,如果有什么不足的地方,大家可以在评论区或者私信我,感谢大家的支持

💻那么,快拿出你的电脑,跟着文章一起学习起来吧


一、分区表

1.什么是表分区

👉:传送门💖什么是表分区💖


1.1 分区的意义

1.2 分区的作用

1.3 表分区的方法


2.创建分区表

2.1 创建范围分区表

👉:传送门💖创建范围分区表💖


2.1.1 基本语法

2.1.2 示例


2.2 创建列表分区表

👉:传送门💖创建列表分区表💖


2.2.1 基本语法

2.2.2 示例


2.3 创建散列分区表

使用范围分区和列表分区方法都可能导致数据分布不均匀,此时可以采用散列分区方法,将数据均匀分布到指定的分区中。


2.3.1 基本语法

使用带PARTITION BY HASH子句的CREATE TABLE语句创建散列分区表,基本语法为:


CREATE TABLE table(...)
PARTITION BY HASH (column1[,column2,...])
[(PARTITION partition [TABLESPACE tablespace][,...])]|[PARTITION hash_partition_quantity STORE IN (tablespace1[,...])]
...


通过PARTITION BY HASH 指定分区方法,其后的括号指定分区列

使用PARTITION子句指定每个分区名称和其存储空间

或者使用PARTITION子句指定分区数量,用STORE IN子句指定分区存储空间

2.3.2 示例1

通过PARTITION BY HASH 指定分区方法,其后的括号指定分区列

使用PARTITION子句指定每个分区名称和其存储空间

示例: 创建一个分区表,根据学号将学生信息均匀分布到ORCLTBS1和ORCLTBS2两个表空间中


CREATE TABLE student_hash(
  sno NUMBER(6) PRIMARY KEY,
  sname VARCHAR2(10)
)
PARTITION BY HASH(sno)
(
    PARTITOIN p1 TABLESPACE ORCLTBS1,
    PARTITOIN p1 TABLESPACE ORCLTBS2
);


2.3.2 示例2

使用PARTITION子句指定分区数量,用STORE IN子句指定分区存储空间

示例: 创建一个分区表,根据学号将学生信息均匀分布到ORCLTBS1和ORCLTBS2两个表空间中


# 用STORE IN子句指定分区存储空间创建分区表
CREATE TABLE student_hash(
  sno NUMBER(6) PRIMARY KEY,
  sname VARCHAR2(10)
)
PARTITION BY HASH(sno)
PARTITION 2 STORE IN (ORCLTBS1,ORCLTBS2);


2.4 创建复合分区表

创建复合分区表时,首先在CREATE TABLE语句中使用PARTITION BY子句指定分区方法、分区列,然后使用SUBPARTITION BY子句指定子分区方法、子分区列、子分区数量及子分区的描。


2.4.1 示例1 范围-列表复合分区

创建一个范围-列表复合分区表,将1980年1月1日前出生的男、女学生信息分别保存在ORCLTBS1和ORCLTBS2两个表空间中,1980年1月1日到1990年1月1日出生的男、女学生信息分别保存在ORCLTBS3和ORCLTBS4两个表空间中,其他学生信息保存在ORCLTBS5表空间中

CREATE TABLE student_range_list(
  sno NUMBER(6) PRIMARY KEY,
  sname VARCHAR2(10),
    sex VARCHAR(2) CHECK(sex in ('M','F')),
    sage NUMBER(4),
    birthday DATE
)
PARTITION BY RANGE(birthday)
SUBPARTITION BY LIST(sex)
(
    PARTITION p1 VALUES LESS THAN(TO_DATE('1980-1-1','YYYY-MM-DD'))
    (
        SUBPARTITION p1_sub1 VALUES('M') TABLESPACE ORCLTBS1,
        SUBPARTITION p1_sub2 VALUES('F') TABLESPACE ORCLTBS2        
    ),
    PARTITION p2 VALUES LESS THAN(TO_DATE('1990-1-1','YYYY-MM-DD'))
    (
        SUBPARTITION p2_sub1 VALUES('M') TABLESPACE ORCLTBS3,
        SUBPARTITION p2_sub2 VALUES('F') TABLESPACE ORCLTBS4        
    ),
    PARTITION p3 VALUES LESS THAN(MAXVALUE) TABLESPACE ORCLTBS5
)



2.4.2 示例2 范围-散列复合分区

创建一个范围-散列复合分区表,将1980年1月1日前出生学生信息分别保存在ORCLTBS1和ORCLTBS2两个表空间中,1980年1月1日到1990年1月1日出生的学生信息分别保存在ORCLTBS3和ORCLTBS4两个表空间中,其他学生信息保存在ORCLTBS5表空间中

CREATE TABLE student_range_list(
  sno NUMBER(6) PRIMARY KEY,
  sname VARCHAR2(10),
    sage NUMBER(4),
    birthday DATE
)
PARTITION BY RANGE(birthday)
SUBPARTITION BY HASH(sage)
(
    PARTITION p1 VALUES LESS THAN(TO_DATE('1980-1-1','YYYY-MM-DD'))
    (
        SUBPARTITION p1_sub1 TABLESPACE ORCLTBS1,
        SUBPARTITION p1_sub2 TABLESPACE ORCLTBS2        
    ),
    PARTITION p2 VALUES LESS THAN(TO_DATE('1990-1-1','YYYY-MM-DD'))
    (
        SUBPARTITION p2_sub1 TABLESPACE ORCLTBS3,
        SUBPARTITION p2_sub2 TABLESPACE ORCLTBS4        
    ),
    PARTITION p3 VALUES LESS THAN(MAXVALUE) TABLESPACE ORCLTBS5
)


小结

😘感谢大家耐心的看完这篇文章,这篇文章是Oracle的表分区的第2篇文章,对于SQL在表分区的知识点,我们在MySQL方面已经有五篇内容了,大家可以去我的专栏SQL应知应会 进行学习,如果大家觉着还算可以,那么就给个三连支持一下吧

🏡也可以加入我的社区一起学习呀

✅如果想要继续关注和学习后续更多的内容,那就关注一下爱书不爱输的程序猿吧,当然,如果大家还有什么其他方面的知识点想要看,可以在评论区或者私信我


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
3月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
327 8
|
8月前
|
SQL Oracle 关系型数据库
解决大小写、保留字与特殊字符问题!Oracle双引号在SQL中的特殊应用
在Oracle数据库开发中,双引号的使用是一个重要但易被忽视的细节。本文全面解析了双引号在SQL中的特殊应用场景,包括解决标识符与保留字冲突、强制保留大小写、支持特殊字符和数字开头标识符等。同时提供了最佳实践建议,帮助开发者规避常见错误,提高代码可维护性和效率。
310 6
|
9月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
|
9月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
本文来自YashanDB官网,介绍如何处理Oracle客户端sql*plus中使用@@调用同级目录SQL脚本的场景。崖山数据库23.2.x.100已支持@@用法,但旧版本可通过Python脚本批量重写SQL文件,将@@替换为绝对路径。文章通过Oracle示例展示了具体用法,并提供Python脚本实现自动化处理,最后调整批处理脚本以适配YashanDB运行环境。
|
11月前
|
SQL Oracle 关系型数据库
如何在 Oracle 中配置和使用 SQL Profiles 来优化查询性能?
在 Oracle 数据库中,SQL Profiles 是优化查询性能的工具,通过提供额外统计信息帮助生成更有效的执行计划。配置和使用步骤包括:1. 启用自动 SQL 调优;2. 手动创建 SQL Profile,涉及收集、执行调优任务、查看报告及应用建议;3. 验证效果;4. 使用 `DBA_SQL_PROFILES` 视图管理 Profile。
|
SQL 关系型数据库 Oracle
ORACLE SQL优化之ORA-03150&ORA-02055&ORA-02063
                                                                                                             >   
5079 0
|
SQL Oracle 关系型数据库
Oracle SQL优化之多表连接
Oracle SQL优化之多表连接
790 0
Oracle SQL优化之多表连接
|
SQL 存储 Oracle
Oracle数据库 | SQL语句执行计划、语句跟踪与优化实例
Oracle数据库 | SQL语句执行计划、语句跟踪与优化实例
495 0
|
SQL 存储 Oracle
Oracle SQL语句优化方法总结
  1、SQL语句尽量用大写的   因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行。   2、使用表的别名   当在SQL语句中连接多个表时, 尽量使用表的别名并把别名前缀于每个列上。这样一来,   就可以减少解析的时间并减少那些由列歧义引起的语法错误。   3、选择最有效率的表名顺序(只在基于规则的优化器(RBO)中有效)
313 0

推荐镜像

更多