1.表分区:
在建表的时候将表建成分区表
2.好处:
a1.提高对数据检索或操作的效率
a2.不同的分区可以保存到不同的表空间(磁盘),提高数据的安全性
a3.可以将数据分到不同的分区
a4.每个分区的数据可以独立的备份和恢复
3.表分区的方法:
a1.范围分区
a2.散列分区
a3.列表分区
a4.复合分区
4. 维护分区
a1.增加新的分区
a2.删除分区
a3.截断分区
a4.合并分区
a5.拆分分区
a6.重命名表分区


范围分区表

-ordertable(orderid,money,orderdate,userid)
按订单时间来进行分区-范围分区表
--2019一季度的订单—分区Q1下
–2019二季度的订单—分区Q2下
–2019三季度的订单—分区Q3下
–2019四季度的订单—分区Q4下
–其它时间的订单---- 分区Q5下

语法:
create table 表名(
列的描述,
列的描述,

列的描述
)

partition by range(列名)
(
partition 分区名1 values less than(值1) tablespace 表空间1,
partition 分区名2 values less than(值2) tablespace 表空间2,

partition 分区名n values less than(值n) tablespace 表空间n,
partition 分区名m values less than(maxvalue)
)

 CREATE TABLE ordertable(orderid NUMBER PRIMARY KEY,--订单编号money NUMBER(12,2) NOT NULL,--订单金额orderdate DATE NOT NULL, --下单时是userid NUMBER(8,0) NOT NULL --用户编号)
 PARTITION BY RANGE(orderdate)(PARTITION Q1 VALUES LESS THAN('31-3月-2019') TABLESPACE studb,PARTITION Q2 VALUES LESS THAN(to_date('2019-6-30','yyyy-MM-dd')) TABLESPACE testDB,PARTITION Q3 VALUES LESS THAN(to_date('2019-9-30','yyyy-MM-dd')) TABLESPACE testDB,PARTITION Q4 VALUES LESS THAN(to_date('2019-12-31','yyyy-MM-dd')) TABLESPACE testDB,PARTITION Q5 VALUES LESS THAN(MAXVALUE) TABLESPACE testDB)
 INSERT INTO ordertable VALUES (1,10000,'10-2月-2019',1000);--进入Q1分区INSERT INTO ordertable VALUES (2,8000,'10-1月-2019',1001);--进入Q1分区INSERT INTO ordertable VALUES (3,9000,'20-2月-2019',1002);--进入Q1分区INSERT INTO ordertable VALUES (4,3000,'10-3月-2019',1003);--进入Q1分区
  INSERT INTO ordertable VALUES (5,10000,'10-4月-2019',1000);--进入Q2分区INSERT INTO ordertable VALUES (6,8000,'10-5月-2019',1001);--进入Q2分区INSERT INTO ordertable VALUES (7,9000,'20-6月-2019',1002);--进入Q2分区INSERT INTO ordertable VALUES (8,3000,'10-7月-2019',1003);--进入Q3分区
  INSERT INTO ordertable VALUES (9,10000,'10-8月-2019',1000);--进入Q3分区  INSERT INTO ordertable VALUES (10,8000,'10-9月-2019',1001);--进入Q3分区  INSERT INTO ordertable VALUES (11,9000,'20-10月-2019',1002);--进入Q4分区 INSERT INTO ordertable VALUES (12,3000,'10-11月-2019',1003);--进入Q4分区 INSERT INTO ordertable VALUES (13,3000,'10-11月-2018',1003);--进入Q1分区 INSERT INTO ordertable VALUES (14,3000,'10-3月-2020',1003);--进入Q5分区  SELECT * FROM ordertable   
 --查询Q1分区的数据   SELECT * FROM ordertable  PARTITION(Q5)  WHERE userid=1000
    --修改`在这里插入代码片`第一季度,用户编号为1002这个订单的金额为19000UPDATE ordertable PARTITION(Q1) SET money=19000 WHERE userid=1002
 --删除第一季度,用户编号为1002这个订单  DELETE FROM ordertable PARTITION(Q1) WHERE userid=1002

散列分区

根据客户名字,创建散列分区,分成4个分区

  CREATE TABLE customer(cusId NUMBER(10,0) PRIMARY KEY,--客户编号cusName VARCHAR2(30) NOT NULL,--客户名age NUMBER(3,0) NOT  NULL, --年龄 phone VARCHAR2(20) NOT NULL --电话)PARTITION BY HASH(cusName)PARTITIONS 4
  INSERT INTO customer2 VALUES (1,'钟俊1',20,'133213213');INSERT INTO customer2 VALUES (2,'中唐',20,'133213213');INSERT INTO customer2 VALUES (3,'多唐',20,'133213213');INSERT INTO customer2 VALUES (4,'低唐',20,'133213213');INSERT INTO customer2 VALUES (5,'不加糖',20,'133213213');INSERT INTO customer2 VALUES (6,'白沙糖',20,'133213213');INSERT INTO customer2 VALUES (7,'红糖',20,'133213213');INSERT INTO customer2 VALUES (8,'冰糖',20,'133213213');
  SELECT * FROM customer PARTITION (SYS_P45) ORDER BY cusid ASC  --3,5,6SELECT * FROM customer PARTITION (SYS_P46) ORDER BY cusid ASC --4SELECT * FROM customer PARTITION (SYS_P47) ORDER BY cusid ASC --1,7,8SELECT * FROM customer PARTITION (SYS_P48) ORDER BY cusid ASC --2
  CREATE TABLE customer2(cusId NUMBER(10,0) PRIMARY KEY,--客户编号cusName VARCHAR2(30) NOT NULL,--客户名age NUMBER(3,0) NOT  NULL, --年龄 phone VARCHAR2(20) NOT NULL --电话)PARTITION BY HASH(cusName)
(PARTITION p1 TABLESPACE studb,PARTITION p2 TABLESPACE zhilingdb,PARTITION p3 ,PARTITION p4
)
`SELECT * FROM customer2 PARTITION(p1)`**

---------------------------------------------------------**
–**

列表分区

** ,根据学生的地址address将数据保存到不同的分区下

CREATE TABLE stu_temp2(stuid NUMBER(10,0) PRIMARY KEY,stuname VARCHAR2(30) NOT NULL,address VARCHAR2(20) NOT NULL,phone VARCHAR2(30) NOT NULL)
  PARTITION BY LIST(address)(PARTITION guangdong VALUES ('广东省') TABLESPACE zhilingdb,PARTITION hubei VALUES ('湖北省') TABLESPACE zhilingdb,PARTITION hunan VALUES ('湖南省') TABLESPACE studb,PARTITION guangxi VALUES ('广西省') TABLESPACE zhilingdb,PARTITION hebei VALUES ('河南省') TABLESPACE zhilingdb ,PARTITION qita VALUES (DEFAULT))
 INSERT INTO stu_temp2 VALUES (1,'小张','广东省',110);INSERT INTO stu_temp2 VALUES (2,'小李','湖北省',110);INSERT INTO stu_temp2 VALUES (3,'小何','湖南省',110);INSERT INTO stu_temp2 VALUES (4,'小钟','湖北省',110);INSERT INTO stu_temp2 VALUES (5,'小徐','湖南省',110);INSERT INTO stu_temp2 VALUES (6,'小黄','河南省',110);INSERT INTO stu_temp2 VALUES (7,'小虎','河南省',110);INSERT INTO stu_temp2 VALUES (8,'小强','北京',110);
 SELECT * FROM stu_temp2 PARTITION(hunan)

复合分区

:外层是范围分区,子分区是列表分区

create table customer3(customerid number primary key,customername varchar2(30) not null,phone varchar2(30) not null,address varchar2(30) not null)
 partition by range(customerid)subpartition by list (address)(partition customer3_p1 values less than (10000)(subpartition p1_gd values ('广东'),subpartition p1_gx values ('广西'),subpartition p1_qt values (DEFAULT)), partition customer3_p2 values less than (maxvalue) (subpartition p2_gd values ('广东'),subpartition p2_gx values ('广西'),subpartition p2_qt values (DEFAULT)))
 INSERT INTO customer3 VALUES (1,'aa','110','广东');INSERT INTO customer3 VALUES (2,'bb','110','广西');INSERT INTO customer3 VALUES (3,'cc','110','湖北');INSERT INTO customer3 VALUES (4,'dd','110','广东');INSERT INTO customer3 VALUES (5,'dd','110','湖南');INSERT INTO customer3 VALUES (20000,'aa','110','广东');INSERT INTO customer3 VALUES (20001,'bb','110','广西');INSERT INTO customer3 VALUES (20002,'cc','110','湖北');INSERT INTO customer3 VALUES (20003,'dd','110','广东');INSERT INTO customer3 VALUES (20004,'dd','110','湖南');
 --查询客户id<10000的下的广东的客户(直接指定子分区名字查询)SELECT * FROM customer3  subpartition(p2_gx) ROLLBACKCOMMIT;SELECT * FROM ordertable PARTITION(Q2_2020) ------------------------------------------------

–删除Q5分区:同步删除该分区的数据

ALTER TABLE ordertable DROP PARTITION def_part

–增加分区:为2020年第一季度增加新的分区

ALTER TABLE ordertable ADD PARTITION Q1_2020 VALUES LESS THAN('31-3月-2020')
ALTER TABLE ordertable ADD PARTITION Q2_2020 VALUES LESS THAN('30-6月-2020')
INSERT INTO ordertable VALUES (20,5000,'1-4月-2020',1000)

–删除分区:删除表分区时,表分区及表分区中的数据也随之删除

ALTER TABLE customer3 DROP PARTITION customer3_p1

–截断分区:截断表分区时,删除表分区中的数据,表分区还在,也不影响其它表分区

ALTER TABLE ordertable TRUNCATE PARTITION Q2_2020

–截断分区:截断子表分区时,删除表分区中的数据,表分区还在,也不影响其它表分区

ALTER TABLE ordertable TRUNCATE SUBPARTITION  PARTITION customer3_p1_sub

–合并表分区-将范围分区或复合分区的两个相邻分区连接起来

ALTER TABLE ordertable MERGE PARTITIONS q1_2019,q2_2019 INTO PARTITION q7_2019

–重命名表分区

ALTER TABLE SALES RENAME PARTITION P21 TO P2;

–拆分分区 - 将一个大分区中的记录拆分到两个分区中

ALTER TABLE SALES SPLIT PARTITION P2 AT (5000)
INTO (PARTITION P21, PARTITION P22);

–跨分区查询

select sum(*) from (select count(*) cn from t_table_SS PARTITION (P200709_1)--10
union allselect count(*) cn from t_table_SS PARTITION (P200709_2)--20
);

SQL查询优化——表分区相关推荐

  1. sql server表分区_介绍分区表SQL Server增量统计信息

    sql server表分区 If you are maintaining a very large database, you might be well aware of the pain to p ...

  2. sql server表分区_SQL Server 2016增强功能– SQL截断表和表分区

    sql server表分区 The idea behind this article is to discuss the importance and the implication of SQL P ...

  3. sql server表分区_SQL Server中的FORCESCAN和分区表

    sql server表分区 I would like to share one curios case that I recently came across. 我想分享一下我最近遇到的一个古玩案例. ...

  4. SQL Server 表分区实战系列(文章索引)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 前言(Introduction) 实战说明(In Action) 表分区逻辑结构图(Construction) 表分区学 ...

  5. SQL Server 表分区注意事项(转载)

    在园子里看到 听风吹雨 关于SQL Server 表分区注意事项 ,总结的太好了.备忘,方便以后查询! http://www.cnblogs.com/gaizai/archive/2011/05/31 ...

  6. SQL Server表分区的NULL值问题

    原文:SQL Server表分区的NULL值问题 SQL Server表分区的NULL值问题 SQL Server表分区只支持range分区这一种类型,往往会被大家吐槽 人家MySQL支持四种类型:R ...

  7. SQL Server表分区【转】

    转自:http://www.cnblogs.com/knowledgesea/p/3696912.html SQL Server表分区 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个 ...

  8. 52. SQL Server -- 表分区实战系列(文章索引)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 前言(Introduction) 实战说明(In Action) 表分区逻辑结构图(Construction) 表分区学 ...

  9. SQL Server表分区-水平分区

    SQL Server表分区,sql server水平分区 转自:http://www.cnblogs.com/knowledgesea/p/3696912.html  根据时间的,直接上T-SQL代码 ...

最新文章

  1. Ruby Metaprogramming
  2. 生信入门必须掌握的 30 个 Linux 命令
  3. java 数据结构容器之HashSet
  4. C++ Primer 5th笔记(chap 13 拷贝控制)合成的移动操作
  5. MySQL批量更改数据库表结构字符集
  6. 7安装sql cent os server_CentOS7 安装并使用SQL Server
  7. linux 终端 朗读,使Linux终端朗读文字的小技巧分享
  8. C++ 使用A*算法解决八数码问题
  9. java 算法基础之一寻找最大公约数
  10. VSS 获取全部子文件
  11. MySQL项目--电商平台--数据库搭建
  12. 洛谷 P2414 [NOI2011] 阿狸的打字机 题解
  13. 关于SharePoint中文翻译的吐槽
  14. 小蜜蜂吉他谱 高八度和低八度
  15. 福建省漳州市谷歌卫星地图下载
  16. does not specify a Swift version and none of the targets (`packager`) integrating it have the `SWIFT
  17. Facebook投资者Peter Thiel—一个不折不扣的“魔戒”迷
  18. error: [xxxxxxx/qrc_resource.cpp] Error 1
  19. 平滑处理--拉普拉斯(Laplace Smoothing)
  20. sql语句分析是否走索引_SQL Server 索引使用分析(2)- 改善SQL语句,防止索引失效...

热门文章

  1. SolarWinds网络工程师工具集
  2. “复制”马斯克(三):我们要为他的“反智事业”买单吗?
  3. Java语法基本概念
  4. Paxos Made Practical
  5. Python实战——ESIM 模型搭建(keras版)
  6. 区块链对医疗行业的影响
  7. 数据结构-字符串和数组简单题
  8. Could not find artifact com.dingtalk.api:top-api-sdk-dev:pom:ding-open-mc-SNAPSHOT in aliyunmaven
  9. 对称与魔术初步(六)——魔术《4选1的诅咒》等
  10. 红帽认证工程师常见问题解答(转)