MySQL 8.4 參考手冊  /  分區  /  分區管理

26.3 分區管理

有多種方法可以使用 SQL 陳述式來修改分區表格;可以使用 ALTER TABLE 陳述式的分區擴充功能來新增、刪除、重新定義、合併或分割現有的分區。 還有一些方法可以取得有關分區表格和分區的資訊。 我們將在後續章節中討論這些主題。

注意

分區表格的所有分區都必須具有相同數量的子分區;表格建立後就無法變更子分區。

若要變更表格的分區架構,只需要使用具有 partition_options 選項的 ALTER TABLE 陳述式,其語法與使用 CREATE TABLE 建立分區表格時所使用的語法相同;此選項(也)始終以關鍵字 PARTITION BY 開頭。假設下列 CREATE TABLE 陳述式用於建立依範圍分區的表格

CREATE TABLE trb3 (id INT, name VARCHAR(50), purchased DATE)
    PARTITION BY RANGE( YEAR(purchased) ) (
        PARTITION p0 VALUES LESS THAN (1990),
        PARTITION p1 VALUES LESS THAN (1995),
        PARTITION p2 VALUES LESS THAN (2000),
        PARTITION p3 VALUES LESS THAN (2005)
    );

若要重新分區此表格,使其依據索引鍵使用 id 資料行值作為索引鍵的基礎分成兩個分區,可以使用此陳述式

ALTER TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2;

這對表格結構的影響與刪除表格並使用 CREATE TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2; 重新建立表格的效果相同。

ALTER TABLE ... ENGINE [=] ... 只會變更表格使用的儲存引擎,並保持表格的分區架構不變。只有在目標儲存引擎提供分區支援時,陳述式才會成功。您可以使用 ALTER TABLE ... REMOVE PARTITIONING 來移除表格的分區;請參閱第 15.1.9 節「ALTER TABLE 陳述式」

重要

在給定的 ALTER TABLE 陳述式中,只能使用單一的 PARTITION BYADD PARTITIONDROP PARTITIONREORGANIZE PARTITIONCOALESCE PARTITION 子句。 如果您(例如)想要刪除一個分區並重新組織表格的其餘分區,則必須在兩個不同的 ALTER TABLE 陳述式中執行此操作(一個使用 DROP PARTITION,然後第二個使用 REORGANIZE PARTITION)。

您可以使用 ALTER TABLE ... TRUNCATE PARTITION 刪除一個或多個選定分區中的所有列。