亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql中怎么創建表分區

發布時間:2021-07-28 17:00:19 來源:億速云 閱讀:444 作者:Leah 欄目:MySQL數據庫

今天就跟大家聊聊有關mysql中怎么創建表分區,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

1.RANGE 分區:

CREATE TABLE t5(id INT,dt DATETIME NOT NULL
)
PARTITION BY RANGE (TO_DAYS(dt)) (
    PARTITION p0 VALUES LESS THAN (TO_DAYS('2014-01-01')),
    PARTITION p1 VALUES LESS THAN (TO_DAYS('2014-02-01')),
    PARTITION p2 VALUES LESS THAN (TO_DAYS('2014-03-01')),
    PARTITION p3 VALUES LESS THAN MAXVALUE);

注意range分區不能直接對日期型數據分區,所以要對分日期進行分區,需要變通一下,將日期轉換成int型才行。

CREATE TABLE t5(id INT,dt DATETIME NOT NULL
)
PARTITION BY RANGE (dt) (
    PARTITION p0 VALUES LESS THAN ('2014-01-02'),
    PARTITION p1 VALUES LESS THAN ('2014-01-03'),
    PARTITION p2 VALUES LESS THAN ('2014-01-04'),
    PARTITION p3 VALUES LESS THAN MAXVALUE);

如果使用上面的語句,直接使用日期列進行分區,則會出現以下錯誤:
錯誤碼: 1697
VALUES value for partition 'p0' must have type INT

2.LIST分區

CREATE TABLE t6
(userid  INT NOT NULL ,
 usertype INT NOT NULL
)
PARTITION BY LIST(usertype)
(
PARTITION p1 VALUES IN  (1),
PARTITION p2 VALUES IN  (2),
PARTITION p3 VALUES IN  (3)
);

3.HASH分區

HASH分區主要用來確保數據在預先確定數目的分區中平均分布。只需指定一個列值或表達式作為哈希列,然后指定分區數據即可。

CREATE TABLE t8
(userid  INT NOT NULL ,
 dt DATE
)
PARTITION BY HASH(MONTH(dt))
PARTITIONS 6;
HASH分區有個問題,就是where條件是指定的一個范圍的話,將會掃描所有分區,這就達不到使用分區表來減少掃描范圍獲得性能的提高的目的。尤其是使用達式作為分區關鍵字時,一定要注意類型,最好是數值型。
EXPLAIN PARTITIONS
SELECT COUNT(*) FROM t8 WHERE dt>'2013-08-01‘
以上語句就是掃描所有分區.

4.key分區

Key分區類型于HASH分區,HASH分區使用的用戶定義的表達式,而KEY分區的哈希函數是由MySQL 服務器提供,這些函數是基于與PASSWORD()一樣的運算法則。它與Hash分區主要的區別是,分區依據只能是一個或多個列名的一個列表。

CREATE TABLE t9
(userid  INT NOT NULL ,
 dt DATE
)
PARTITION BY HASH(dt)
PARTITIONS 6;
Key分區和HASH分區一樣,有范圍掃描的問題。

5.復合分區

1)RANGE - HASH(范圍哈希)復合分區
CREATE TABLE t11
(id INT NOT NULL ,
dt DATE
)
PARTITION BY RANGE(id)
SUBPARTITION BY HASH(YEAR(dt))
SUBPARTITIONS 4
(
PARTITION p1 VALUES LESS THAN (100000),
PARTITION p2 VALUES LESS THAN maxvalue
);

2)RANGE- KEY復合分區
CREATE TABLE t12
(id  INT NOT NULL ,
dt DATE
)
PARTITION BY RANGE(id)
SUBPARTITION BY KEY(dt)
SUBPARTITIONS 4
(
PARTITION p1 VALUES LESS THAN (100000),
PARTITION p2 VALUES LESS THAN maxvalue
);

3)LIST - HASH復合分區
CREATE TABLE t13 (
userid INT,
usertype INT
)
PARTITION BY LIST (usertype)
SUBPARTITION BY HASH(userid)
SUBPARTITIONS 3
(
PARTITION p1 VALUES IN  (1),
PARTITION p2 VALUES IN  (2),
PARTITION p3 VALUES IN  (3)
)
;

4)LIST - KEY 復合分區
CREATE TABLE t14 (
userid INT,
usertype INT
)
PARTITION BY LIST (usertype)
SUBPARTITION BY KEY(userid)
SUBPARTITIONS 3
(
PARTITION p1 VALUES IN  (1),
PARTITION p2 VALUES IN  (2),
PARTITION p3 VALUES IN  (3)
)
;

看完上述內容,你們對mysql中怎么創建表分區有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

体育| 泰兴市| 霍城县| 肃北| 陵水| 顺义区| 青川县| 岳阳市| 会同县| 榆树市| 南木林县| 雅安市| 修水县| 焉耆| 施甸县| 平顶山市| 荔浦县| 达孜县| 山阴县| 芒康县| 博湖县| 思茅市| 嘉黎县| 沾益县| 喀什市| 铅山县| 嵊州市| 黄龙县| 宁明县| 平顶山市| 遂平县| 乌兰浩特市| 拜城县| 克什克腾旗| 文安县| 巩留县| 鹤庆县| 铁力市| 忻州市| 宣威市| 鸡西市|