MySQL创建分区方法,及分区中常用SQL示例

这篇具有很好参考价值的文章主要介绍了MySQL创建分区方法,及分区中常用SQL示例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文总结如何通过sql创建表分区,查看分区,以及日常如何使用分区表。

通过sql语句创建

mysql > CREATE TABLE `database_test`.`table_test`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `create_time` datetime(0) NOT NULL,
  PRIMARY KEY (`id`,`create_time`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
PARTITION BY RANGE(YEAR(create_time))(
    PARTITION partition1 VALUES LESS THAN (2020),
    PARTITION partition2 VALUES LESS THAN (2021)
);

查看分区情况:

mysql> SELECT PARTITION_NAME
        ,PARTITION_METHOD
        ,PARTITION_EXPRESSION
        ,PARTITION_DESCRIPTION
        ,TABLE_ROWS
        ,SUBPARTITION_NAME,SUBPARTITION_METHOD
    FROM information_schema.PARTITIONS 
WHERE TABLE_SCHEMA=SCHEMA() AND TABLE_NAME='your_table';

分区中常用SQL示例
1、查询指定分区内的数据:

mysql>  select * from `your_table` partition(your_partition_name);

 2、对已存在的表进行分区

mysql> ALTER TABLE `your_table` PARTITION by HASH(YEAR(`day`)) PARTITIONS 10;

3、 删除表的所有分区

mysql>  ALTER TABLE `your_table` REMOVE PARTITIONING;


4、删除表的特定分区

mysql> ALTER TABLE `your_table` DROP PARTITION your_partition_name;


5、 删除表单个分区内的数据

mysql >  ALTER TABLE `your_table` TRUNCATE PARTITION your_partition_name;

6、把分区内的数据复制到另一张表

mysql> INSERT INTO `your_new_table` SELECT * FROM `your_old_table` PARTITION(your_partition_name);

7、新增分区

mysql> alter table `your_table` add partition(partition your_partition_name values less than(2021));


8、原表已有主键,需要新增复合主键,则需要先丢弃再重新设置主键。

mysql> ALTER TABLE `your_database`.`your_table` 
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`, `login_time`) USING BTREE;

9、查询分区信息。

mysql> SELECT PARTITION_NAME,PARTITION_METHOD,
PARTITION_EXPRESSION,PARTITION_DESCRIPTION,
TABLE_ROWS,SUBPARTITION_NAME,SUBPARTITION_METHOD
FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA=SCHEMA() AND TABLE_NAME='your_table';

10、原表设置了MAXVALUE分区,若想添加新分区又不丢失数据,则需要重新分区。文章来源地址https://www.toymoban.com/news/detail-667730.html

Alter table `your_table` partition by RANGE(YEAR(login_time))(
partition p1 values less than (2014),
partition p2 values less than (2015),
partition p3 values less than (2016),
partition p4 values less than (2019),
partition p5 values less than (MAXVALUE)
);

到了这里,关于MySQL创建分区方法,及分区中常用SQL示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SQL应知应会】表分区(三)• MySQL版

    欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏, 本专栏 主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle

    2024年02月16日
    浏览(50)
  • 【SQL应知应会】表分区(一)• MySQL版

    欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏, 本专栏 主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle 注意: 数据库名、表名、字段名反勾号` 是系统导出DDL语句自带格式,也可以

    2024年02月13日
    浏览(49)
  • 【MySQL】跟着示例学 SQL

    下面所有示例均来自 SQL之母 - SQL自学网站

    2024年04月15日
    浏览(34)
  • MySQL | 常用命令示例

    MySQL是一款常用的关系型数据库管理系统,广泛应用于各个领域。在使用MySQL时,我们经常需要编写一些常用脚本来进行数据操作和管理。本文将介绍一些常用的MySQL脚本,帮助更好地使用MySQL。 启动MySQL数据库服务 停止MySQL数据库服务 MySQL数据库服务状态查看 MySQL数据库服务

    2024年02月15日
    浏览(46)
  • 【mysql表分区系】mysql创建分区表提示A PRIMARY KEY must include all columns in the table‘s partitioning function

    首先声明下我这边使用的mysql版本是5.7.29版本,当然下面的问题我这边也是基于这个版本。这里因为没有考证其他版本是否也会有这些问题,可自行官方文档来查阅资料 一个唯一键必须包含表分区函数所有的列,根据这个错误提示我们大概就知道怎么处理,但是why?我们还是沉

    2024年02月06日
    浏览(91)
  • SQL 日期处理和视图创建:常见数据类型、示例查询和防范 SQL 注入方法

    在数据库操作中,处理日期是一个关键的方面。确保插入的日期格式与数据库中日期列的格式匹配至关重要。以下是一些常见的SQL日期数据类型和处理方法。 DATE - 格式为YYYY-MM-DD DATETIME - 格式为YYYY-MM-DD HH:MI:SS TIMESTAMP - 格式为YYYY-MM-DD HH:MI:SS YEAR - 格式为YYYY或YY DATE - 格式为YY

    2024年02月05日
    浏览(59)
  • MySQL分区表的正确使用方法,适用场景,建立分区的条件

    什么是MySQL分区? MySQL分区是将一张表分割成独立的子表的技术。每个子表被称为分区,它们有着相同的结构和字段,但存储着不同的数据。这项技术可以提高查询速度,减少日志文件和磁盘空间的使用。 建立分区的条件 要建立MySQL分区,需要满足以下几个条件: 1.所需的

    2024年02月07日
    浏览(46)
  • mysql--sql常用语句

    通过profile命令来查看当前最主要的耗费时间的步骤。 mysql select state,sum(duration) as total_r , round(100*sum(duration)/(select sum(duration) from information_schema.profiling where query_id=6),2) as pct_r,count(*) as calls,sum(duration)/count(*) as \\\'R/Call\\\' from information_schema.profiling where query_id group by 

    2024年04月17日
    浏览(53)
  • mysql 系统优化常用sql

    -- 查询执行时间最长的sql select * from information_schema.processlist where Command\\\'Sleep\\\' order by time desc ; -- 查看当前的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX; -- 查看当前锁定的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; -- 查看当前等锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS; -- 查询超

    2024年02月09日
    浏览(37)
  • 【JaveWeb教程】(17) MySQL数据库开发之 MySQL简介、安装、数据类型、SQL通用语法 详细代码示例讲解

    在我们讲解SpringBootWeb基础知识(请求响应案例)的时候,我们讲到在web开发中,为了应用程序职责单一,方便维护,我们一般将web应用程序分为三层,即:Controller、Service、Dao 。 之前我们的案例中,是这样子的请求流程:浏览器发起请求,先请求Controller;Controller接收到请求之

    2024年01月25日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包