我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySql表分区(根据时间datetime)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySql表分区(根据时间datetime)

timestamp 类型分区请移步=>MySql表分区(根据时间timestamp)
环境:
  MySql8.0.18(5.6和5.7的未验证)
  分区条件的字段类型是datetime
完整的sql操作表分区的语句如下:

-- 1.删除表
drop table t_test;

-- ===================================================================================
-- 2.创建一个表并对其分区,被创建分区的字段必须为主键,或者创建分区时表中没有主键
-- 2.1 方式一:表和分区一起创建
create table t_test (
        id int,
        dates timestamp
)partition by range (unix_timestamp(dates)) (
        -- 小于2018-01-01的
        partition p1 values less than (unix_timestamp('2018-01-01')),
        partition p2 values less than (unix_timestamp('2018-02-01')),
        partition p3 values less than (unix_timestamp('2018-03-01')),
        -- 大于2018-03-01的
        partition p4 values less than maxvalue
);

-- ===================================================================================
-- 2.2 方式二:表和分区分开创建
-- 2.2.1 建表
create table `t_test`  (
  `id` int(11) not null,
  `dates` datetime(0) not null on update current_timestamp(0),
  primary key (`id`, `dates`)
);

-- 3. 修改分区信息
alter table t_test partition by range (to_days(dates)) (
    -- 小于2020-01-01的
    partition p1 values less than (to_days('2020-01-01')),
    partition p2 values less than (to_days('2020-02-01')),
    partition p3 values less than (to_days('2020-03-01')),
    partition p4 values less than (to_days('2020-04-01')),
    -- 大于2020-04-01的
    partition p5 values less than maxvalue
);

-- ===================================================================================
-- 4. 删除并添加新的分区(注意:如果原先最后一个分区是partition pnow values less than maxvalue; 那么应该先删除该分区,然后在执行新增分区语句,然后再新增回该分区)
-- 4.1 删除一个分区(注意:删除一个分区时,该分区内的所有数据也都会被删除;)
alter table t_test drop partition p5;
-- 4.2 新增一个分区
alter table t_test add partition (partition p6 values less than (to_days('2020-05-01')));
-- 4.3 新增一个分区(不满足其余分区条件的都存放在这个分区)
alter table t_test add partition (partition p7 values less than maxvalue);

-- ===================================================================================
-- 5.查询这个表有多少分区
-- 5.1查询每一个分区对应的数量
select
    partition_name part, partition_expression expr, partition_description descr, 
    from_days(partition_description) expirydate, table_rows 
from
    information_schema.`partitions`
where
    table_name='t_test'; 

-- 6.创建测试数据
-- 小于2020-01-01 2条
insert into `t_test` values ('1', '2018-01-02 15:00:00');
insert into `t_test` values ('2', '2019-12-02 15:00:00');
-- 2020-01-01至2020-02-01 1条
insert into `t_test` values ('3', '2020-01-02 16:00:00');
-- 2020-02-01至2020-03-01 2条
insert into `t_test` values ('4', '2020-02-03 15:00:00');
insert into `t_test` values ('5', '2020-02-03 15:00:00');
-- 2020-03-01至2020-04-01 1条
insert into `t_test` values ('6', '2020-03-03 15:00:00');
-- 2020-04-01至2020-05-01 1条
insert into `t_test` values ('7', '2020-04-03 15:00:00');
-- 大于2020-05-01 4条
insert into `t_test` values ('8', '2020-05-03 15:00:00');
insert into `t_test` values ('8', '2020-06-03 15:00:00');
insert into `t_test` values ('8', '2020-06-06 15:00:00');
insert into `t_test` values ('8', '2021-01-01 15:00:00');

-- 6.查询数据
select * from t_test;

我们使用第5步的sql可以查看分区信息
  可以看到2020-01-01之前的有2条信息,2020-01-01至2020-02-01之前的有1条信息,以此类推,最后2020-05-01之后的一共有4条信息

MySql表分区(根据时间datetime)

也可使用Navicat for MySQL工具操作分区:Navicat for MySQL进行表分区操作(图解)
timestamp 类型分区请移步=>MySql表分区(根据时间timestamp)

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySql表分区(根据时间datetime)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Oracle使用range分区并根据时间列自动创建分区

oracle使用range分区,根据时间列自动创建分区-- Create tablecreate table MY_TEST (id NUMBER (12) not null,name VARCHAR2 (12) not
2023-04-19

oracle怎么根据分区表更新数据

要根据分区表更新数据,可以使用以下步骤:1. 首先,确定要更新的分区表和更新的条件。2. 使用UPDATE语句来更新数据,语法如下:```sqlUPDATE 表名SET 列名1 = 值1, 列名2 = 值2, ...WHERE 条件```3
2023-08-30

如何用 Golang 根据时区格式化时间?

go 语言中的 time 包可通过时间布局和时区信息对时间进行格式化。首先加载时区信息,可通过 time.loadlocation 函数实现。其次,使用 language 和 region 包载入时区布局字符串。最后,调用 time.for
如何用 Golang 根据时区格式化时间?
2024-05-22

Mysql临时表及分区表区别详解

临时表与内存表 内存表,指的是使用Memory引擎的表,建表语法是create table … engine=memory。这种 表的数据都保存在内存,系统重启的时候会被清空,但是表结构还在。除这两个特性看 上去比较“奇怪”外,从其他的特征
2022-05-26

MySQL按时间进行表分区的方法代码

目录创建按月份分区的表开启数据库事件临时配置(服务重启会失效)修改my.cnf文件(推荐)定时事件自动建分区查询表分区信息总结 创建按月份分区的表create table if not exists table_name(id
MySQL按时间进行表分区的方法代码
2024-09-29

SpringBoot如何根据用户系统时区动态展示时间

这篇文章主要介绍了SpringBoot如何根据用户系统时区动态展示时间,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-01-06

SpringBoot怎么根据用户系统时区动态展示时间

本篇内容介绍了“SpringBoot怎么根据用户系统时区动态展示时间”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!根据用户系统时区动态展示时
2023-07-04

MySQL实现清空分区表单个分区数据

目录mysql清空分区表单个分区数据1.单个分区清空2.编辑存储过程MySQL自动分区自动清理完整的SQL查看分区总结MySQL清空分区表单个分区数据1.单个分区清空ALTER TABLE xxx TRUNCATE PARTITION
2023-03-13

mysql 根据时间范围查询数据的操作方法

在MySQL中查询特定时间范围的数据至关重要。本文介绍了根据时间范围查询数据的四种方法:使用日期和时间列、范围运算符、BETWEEN语句和IN语句。此外,还提供了性能优化建议,例如创建索引、使用覆盖索引和分页。了解这些方法和最佳实践对于高效访问和管理时间相关数据至关重要。
mysql 根据时间范围查询数据的操作方法
2024-04-02

mysql 根据时间范围查询数据的操作方法

目录1.查询指定日期的数据:2.查询指定日期范围的数据:3.查询指定时间范围的数据:javascript4.查询指定日期和时间范围的数据:你可以使用mysql的SELECT语句结合WHERE子句来根据时间范围查询数据。下面是一些常见的时间范
mysql 根据时间范围查询数据的操作方法
2024-01-30

编程热搜

目录