日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql 分区介绍(二) —— RANGE分区

發布時間:2025/3/21 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql 分区介绍(二) —— RANGE分区 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通過范圍的方式進行分區, 為每個分區給出一定的范圍, 范圍必須是連續的并且不能重復, 使用VALUES LESS THAN操作符<br />

讓我們先來創建一個range分區的表

CREATE TABLE employees (id INT NOT NULL,fname VARCHAR(30),lname VARCHAR(30),hired DATE NOT NULL DEFAULT '1970-01-01',separated DATE NOT NULL DEFAULT '9999-12-31',job_code INT NOT NULL,store_id INT NOT NULL ) PARTITION BY RANGE (store_id) (PARTITION p0 VALUES LESS THAN (6),PARTITION p1 VALUES LESS THAN (11),PARTITION p2 VALUES LESS THAN (16),PARTITION p3 VALUES LESS THAN (21) );

store_id 小于6的, 會被放入第一個分區, 小于11的會放入第二個分區。<br>
如果我的store_id大于21怎么辦呢?, 所以我們得修改一下這個創建分區的方式。

CREATE TABLE employees (id INT NOT NULL,fname VARCHAR(30),lname VARCHAR(30),hired DATE NOT NULL DEFAULT '1970-01-01',separated DATE NOT NULL DEFAULT '9999-12-31',job_code INT NOT NULL,store_id INT NOT NULL ) PARTITION BY RANGE (store_id) (PARTITION p0 VALUES LESS THAN (6),PARTITION p1 VALUES LESS THAN (11),PARTITION p2 VALUES LESS THAN (16),PARTITION p3 VALUES LESS THAN (21),PARTITION p4 VALUES LESS THAN (MAXVALUE) );

增加了一個MAXVALUE, MAXVALUE的意思是, 大于21的數據都會放入這個分區, 當然, 還有另外一種方式去避免這個問題, 就是在INSERT的時候增加IGNORE關鍵字。<br />

分區鍵類型為時間轉時間戳 <br />
可以使用UNIX-TIMESTAMP()

CREATE TABLE quarterly_report_status (report_id INT NOT NULL,report_status VARCHAR(20) NOT NULL,report_updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) PARTITION BY RANGE ( UNIX_TIMESTAMP(report_updated) ) (PARTITION p0 VALUES LESS THAN ( UNIX_TIMESTAMP('2008-01-01 00:00:00') ),PARTITION p1 VALUES LESS THAN ( UNIX_TIMESTAMP('2008-04-01 00:00:00') ),PARTITION p2 VALUES LESS THAN ( UNIX_TIMESTAMP('2008-07-01 00:00:00') ),PARTITION p3 VALUES LESS THAN ( UNIX_TIMESTAMP('2008-10-01 00:00:00') ),PARTITION p4 VALUES LESS THAN ( UNIX_TIMESTAMP('2009-01-01 00:00:00') ),PARTITION p5 VALUES LESS THAN ( UNIX_TIMESTAMP('2009-04-01 00:00:00') ),PARTITION p6 VALUES LESS THAN ( UNIX_TIMESTAMP('2009-07-01 00:00:00') ),PARTITION p7 VALUES LESS THAN ( UNIX_TIMESTAMP('2009-10-01 00:00:00') ),PARTITION p8 VALUES LESS THAN ( UNIX_TIMESTAMP('2010-01-01 00:00:00') ),PARTITION p9 VALUES LESS THAN (MAXVALUE) );

除了UNIX_TIMESTAMP外,其他涉及到時間戳的表達式都是不被允許的

基于時間數字的分區 <br />

CREATE TABLE members (firstname VARCHAR(25) NOT NULL,lastname VARCHAR(25) NOT NULL,username VARCHAR(16) NOT NULL,email VARCHAR(35),joined DATE NOT NULL ) PARTITION BY RANGE(YEAR(joined) ) (PARTITION p0 VALUES LESS THAN (1960),PARTITION p1 VALUES LESS THAN (1970),PARTITION p2 VALUES LESS THAN (1980),PARTITION p3 VALUES LESS THAN (1990),PARTITION p4 VALUES LESS THAN MAXVALUE );

歡迎關注我的博客

轉載于:https://blog.51cto.com/a3147972/2087161

總結

以上是生活随笔為你收集整理的Mysql 分区介绍(二) —— RANGE分区的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。