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

MySQL中如何创建Key分区表

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

MySQL中如何创建Key分区表

本篇文章为大家展示了MySQL中如何创建Key分区表,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

按照KEY进行分区类似于按照HASH分区,除了HASH分区使用的用户定义的表达式,而KEY分区的 哈希函数是由MySQL 服务器提供。MySQL 簇(Cluster)使用函数MD5()来实现KEY分区;
对于使用其他存储引擎的表,服务器使用其自己内部的 哈希函数,这些函数是基于与PASSWORD()一样的运算法则。
Key分区与Hash分区很相似,只是Hash函数不同,定义时把Hash关键字替换成Key即可,同样Key分区也有对应与线性Hash的线性Key分区方法。

语法为PARTITION BY LINEAR KEY(列名)

创建key分区表举例如下:

mysql> CREATE TABLE `dsf_data` (
    ->   `id` bigint(20) NOT NULL AUTO_INCREMENT,
    ->   `SH` varchar(32) DEFAULT NULL COMMENT '税号',
    ->   `KPJH` varchar(32) DEFAULT NULL COMMENT '开票机号',
    ->   `ZFJH` varchar(32) DEFAULT NULL COMMENT '主分机号',
    ->   `MONTH` varchar(10) DEFAULT NULL,
    ->   `STATUS` varchar(255) DEFAULT NULL COMMENT '解析状态标识',
    ->   `CREATE_TIME` datetime DEFAULT NULL COMMENT '插入时间',
    ->   `UPDATE_TIME` datetime DEFAULT NULL COMMENT '更新时间',
    ->   `FP_DATA` mediumtext COMMENT '发票数据',
    ->   PRIMARY KEY (`id`,`SH`),
    ->   KEY `index_sh` (`SH`)
    -> ) ENGINE=InnoDB AUTO_INCREMENT=1173560 DEFAULT CHARSET=utf8 PARTITION BY LINEAR KEY (SH) PARTITIONS 8;
Query OK, 0 rows affected (0.11 sec)

备注:如果分区字段中有主键或者唯一索引的列,那么所有主键列和唯一索引列都必须包含进来,因此上一步必须有两个主键PRIMARY KEY (`id`,`SH`)存在。

插入数据:
mysql> insert into dsf_data select * from test.fp_data;
Query OK, 202632 rows affected, 1 warning (18.96 sec)
Records: 202632  Duplicates: 0  Warnings: 1


mysql> explain partitions select sh from dsf_data;  --全表扫描共访问了8个分区(p0--p7)
+----+-------------+----------+-------------------------+-------+---------------+----------+---------+------+------+-------------+
| id | select_type | table    | partitions              | type  | possible_keys | key      | key_len | ref  | rows | Extra       |
+----+-------------+----------+-------------------------+-------+---------------+----------+---------+------+------+-------------+
|  1 | SIMPLE      | dsf_data | p0,p1,p2,p3,p4,p5,p6,p7 | index | NULL          | index_sh | 98      | NULL |    8 | Using index |
+----+-------------+----------+-------------------------+-------+---------------+----------+---------+------+------+-------------+
1 row in set (0.00 sec)



mysql> explain partitions select sh from dsf_data where sh='130202568907641';  --值被随机分到了p0分区
+----+-------------+----------+------------+------+---------------+----------+---------+-------+------+--------------------------+
| id | select_type | table    | partitions | type | possible_keys | key      | key_len | ref   | rows | Extra                    |
+----+-------------+----------+------------+------+---------------+----------+---------+-------+------+--------------------------+
|  1 | SIMPLE      | dsf_data | p0         | ref  | index_sh      | index_sh | 98      | const |    1 | Using where; Using index |
+----+-------------+----------+------------+------+---------------+----------+---------+-------+------+--------------------------+
1 row in set (0.00 sec)


mysql> explain partitions select sh from dsf_data where sh='440300683797687';  --值被随机分到了p4分区
+----+-------------+----------+------------+------+---------------+----------+---------+-------+------+--------------------------+
| id | select_type | table    | partitions | type | possible_keys | key      | key_len | ref   | rows | Extra                    |
+----+-------------+----------+------------+------+---------------+----------+---------+-------+------+--------------------------+
|  1 | SIMPLE      | dsf_data | p4         | ref  | index_sh      | index_sh | 98      | const |    1 | Using where; Using index |
+----+-------------+----------+------------+------+---------------+----------+---------+-------+------+--------------------------+
1 row in set (0.00 sec)




mysql> explain partitions select sh from dsf_data where sh='91500107784224861G';  --sh的值被随机分到了p6分区
+----+-------------+----------+------------+------+---------------+----------+---------+-------+------+--------------------------+
| id | select_type | table    | partitions | type | possible_keys | key      | key_len | ref   | rows | Extra                    |
+----+-------------+----------+------------+------+---------------+----------+---------+-------+------+--------------------------+
|  1 | SIMPLE      | dsf_data | p6         | ref  | index_sh      | index_sh | 98      | const |  452 | Using where; Using index |
+----+-------------+----------+------------+------+---------------+----------+---------+-------+------+--------------------------+
1 row in set (0.00 sec)

值被随机分到各个分区,说明分区表创建成功。

上述内容就是MySQL中如何创建Key分区表,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

免责声明:

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

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

MySQL中如何创建Key分区表

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

下载Word文档

猜你喜欢

mysql如何创建分区表

MySQL可以通过以下步骤来创建分区表:1. 创建一个普通的表,定义它的列和其他属性。2. 使用`ALTER TABLE`语句来添加分区规范。例如,`PARTITION BY RANGE`可以根据指定的列值范围来进行分区。3. 使用`PAR
2023-10-12

mysql如何给表创建一个分区

在MySQL中,可以使用CREATE TABLE语句来创建一个分区表。以下是一个示例:CREATE TABLE employee (id INT,name VARCHAR(50),salary DECIMAL(10,2))PARTIT
mysql如何给表创建一个分区
2024-04-20

PostgreSQL如何创建分区表

这篇文章主要介绍“PostgreSQL如何创建分区表”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PostgreSQL如何创建分区表”文章能帮助大家解决问题。前言PG 假如我们想像Hive那也创建动
2023-07-02

如何在 Java 中创建 MySQL 表?(java如何创建mysql表)

在Java开发中,与MySQL数据库进行交互是非常常见的任务之一。其中,创建MySQL表是数据库操作的基础步骤。本文将详细介绍如何在Java中创建MySQL表,帮助你轻松掌握这一重要技能。一、准备工作
如何在 Java 中创建 MySQL 表?(java如何创建mysql表)
Java2024-12-14

mysql中如何创建表

在 mysql 中创建表涉及五个步骤:1. 打开 mysql 命令行;2. 连接到数据库;3. 使用 create table 语法指定列名和数据类型创建表;4. 执行查询;5. 使用 show tables 查询验证表是否已创建。MySQ
mysql中如何创建表
2024-04-14

如何在mysql中使用foreign key创建外键

如何在mysql中使用foreign key创建外键?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、说明表中的foreign key指向另一表中的primar
2023-06-15

mysql创建表分区的实现示例

MySQL分区是一种将表数据划分为多个逻辑部分的技术,可以提升查询性能、便于数据管理和增强数据安全性。通过使用不同的分区函数,如RANGE、LIST或HASH,可以按范围、离散值或哈希值对数据进行分区。创建分区表只需使用合适的语法,并根据数据分布和查询需求选择分区函数和分区数量。为了优化性能和管理,分区应定期受到监控,并根据需要进行调整。
mysql创建表分区的实现示例
2024-04-02

mysql创建表分区的实现示例

目录1. 基本概念1.1 什么是表分区?1.2 表分区与分表的区别1.3 表分区有什么好处?1.4 分区表的限制因素2. 如何判断当前mysql是否支持分区?3.分区类型详解3.1 MySQL支持的分区类型有哪些?3.2 RANGE分区3.
mysql创建表分区的实现示例
2024-01-29

MySQL中如何创建动态报表

在MySQL中创建动态报表,一种常见的方法是通过存储过程和动态SQL语句来实现。以下是一个简单的示例:创建存储过程:DELIMITER //CREATE PROCEDURE create_dynamic_report()BEGINDECL
MySQL中如何创建动态报表
2024-04-30

mysql如何创建数据库创建表

答案:要使用 mysql 创建数据库和表,请按照以下两步操作:步骤 1:使用 create database 语句创建数据库。步骤 2:使用 create table 语句创建表,指定要包含的列和数据类型。如何使用 MySQL 创建数据库和
mysql如何创建数据库创建表
2024-06-14

mysql创建表分区详细介绍及示例

mysql创建表分区详细介绍及示例 1. 基本概念1.1 什么是表分区?1.2 表分区与分表的区别1.3 表分区有什么好处?1.4 分区表的限制因素 2. 如何判断当前MySQL是否支持分区?3.分区类型详解3.1 MySQL支
2023-08-17

编程热搜

目录