MySQL与瀚高数据库的范围分区的语法及实例(APP)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL与瀚高数据库的范围分区的语法及实例(APP),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3997字,纯文字阅读大概需要6分钟。
内容图文
![MySQL与瀚高数据库的范围分区的语法及实例(APP)](/upload/InfoBanner/zyjiaocheng/869/2292c03759f445a98d4202102a2d49c7.jpg)
目录
环境
文档用途
详细信息
环境
系统平台:Microsoft Windows (64-bit) 10
版本:5.6.4
文档用途
当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。
表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据分类存放到多个表空间的物理文件上,
这样查询数据时,不至于每次都扫描整张表。
分区类型分为范围分区(range partition)、列表分区(list partition)、哈希分区(hash partition)等。
本次主要介绍MySQL和瀚高数据库的范围分区。
MySQL的范围分区:
含义:基于属于一个给定连续区间的列值,把多行分配给分区。主键、约束、索引在分区表中创建。
关键字:RANGE、VALUES LESS THAN
RANGE又可分为原生RANGE和RANGE COLUMNS。
1) 对于原生RANGE分区,分区字段必须是整型或者转换为整型,如果分区字段是日期类型的字段,那么就必须将日期类型的字段转换成整型类型。对于日期类型的转换,优化器只支持year(),to_days,to_seconds,unix_timestamp()函数的转换,其他的并不支持,也就是说,在按日期字段分区的时候,如果不是使用上述几个函数转换的,查询优化器将无法对相关查询进行优化。
2) 对于RANGE COLUMNS分区,不可以使用表达式,只能使用列名;接受一个或多个字段的列表;分区列是不限制于数字列的;字符串、DATE和DATETIME列也可以使用在分区列。
注:分区字段必须包含在主键内
语法:
原生RANGE分区语法:
CREATE TABLE table_name(column_name data_type) PARTITION BY RANGE(整型column_list|整型转换函数(column_list)) ( PARTITION partition_name VALUES LESS THAN (value_list)[, PARTITION partition_name VALUES LESS THAN (value_list)][, ...] ) column_list: column_name[, column_name][, ...] value_list: value[, value][, ...] column_list是一个或多个列名, value_list是和column_list相对应的一个或多个值 |
RANGE COLUMNS分区语法:
CREATE TABLE table_name(column_name data_type) PARTITION BY RANGE COLUMNS(column_list) ( PARTITION partition_name VALUES LESS THAN (value_list)[, PARTITION partition_name VALUES LESS THAN (value_list)][, ...] ) column_list: column_name[, column_name][, ...] value_list: value[, value][, ...] column_list是一个或多个列名, value_list是和column_list相对应的一个或多个值 |
注:在value_list中有一个最大值MAXVALUE,可以创建MAXVALUE的分区,存储超出范围的数据
删除分区语法:
ALTER TABLE table_name DROP PARTITION partition_name; |
瀚高数据库的范围分区:
含义:支持单列、多列分区,例如:RANGE(x,y)
关键字:RANGE、FOR VALUES FROM(……) TO(……)
注:主键、约束、索引等不能在分区表中创建,目前只能在各个分区中创建。分区表只是一个表结构。
语法:
-- 主表 CREATE TABLE table_name ( column_name data_type ) PARTITION BY RANGE ( { column_name } [, ... ] )
-- 子表 CREATE TABLE table_name PARTITION OF parent_table FOR VALUES FROM ( { numeric_literal | string_literal | TRUE | FALSE | MINVALUE | MAXVALUE } [, ...] ) TO ( { numeric_literal | string_literal | TRUE | FALSE | MINVALUE | MAXVALUE } [, ...] ) |
注:MINVALUE是最小值,MAXVALUE是最大值,为了防止插入范围以外的数据时报错,可以创建两个分区,
分别是MINVALUE和MAXVALUE的分区。分区字段的值不能为NULL。
删除分区语法:
-- 把分区修改成普通表 ALTER TABLE table_name DETACH PARTITION partition_name; -- 删除分区 DROP TABLE partition_name; |
详细信息
下面通过实例进行详细说明:
MySQL的范围分区实例:
测试环境:Win10+MySQL5.7
1. 原生RANGE分区实例
1) 使用整型字段score作为分区key
create table student( sid integer auto_increment, sname varchar(20), score integer, birthday DATETIME, ssex varchar(10), primary key(sid,score) -- score是分区字段,必须作为主键 ) partition by range(score)( partition p0 values less than(10),-- 分区p0 partition p1 values less than(20),-- 分区p1 partition p2 values less than(30),-- 分区p2 partition p3 values less than(40),-- 分区p3 partition p4 values less than(50),-- 分区p4 partition p5 values less than(60),-- 分区p5 partition p6 values less than(70),-- 分区p6 partition p7 values less than(80) -- 分区p7 ); |
更多详细信息请登录【瀚高技术支持平台】查看https://support.highgo.com/#/index/docContent/ae5e5742034565ae
内容总结
以上是互联网集市为您收集整理的MySQL与瀚高数据库的范围分区的语法及实例(APP)全部内容,希望文章能够帮你解决MySQL与瀚高数据库的范围分区的语法及实例(APP)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。