sql >> データベース >  >> RDS >> Mysql

char列に基づいてMySQLテーブルをパーティション化する方法は?

    MySQL 5.1でのパーティショニングは、整数列(ソース )のみを処理できます。 )。 いくつかのパーティショニング関数> 非整数列。例:

    CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)
       ENGINE=INNODB
       PARTITION BY HASH( MONTH(tr_date) )
       PARTITIONS 6;
    

    キーのパーティション分割 を使用することもできます。 MySQL 5.1では、主キーにテーブルのパーティショニング関数のすべての列が含まれている限り:

    CREATE TABLE k1 (
       id CHAR(3) NOT NULL PRIMARY KEY,
       value int
    )
    PARTITION BY KEY(id)
    PARTITIONS 10;
    

    一方、MySQL 5.5では、範囲列の分割 またはリスト列のパーティション化 文字ベースの列を含む、さまざまなデータ型で。

    リスト列の例:

    CREATE TABLE expenses (
       expense_date DATE NOT NULL,
       category VARCHAR(30),
       amount DECIMAL (10,3)
    );
    
    ALTER TABLE expenses
    PARTITION BY LIST COLUMNS (category)
    (
       PARTITION p01 VALUES IN ('lodging', 'food'),
       PARTITION p02 VALUES IN ('flights', 'ground transportation'),
       PARTITION p03 VALUES IN ('leisure', 'customer entertainment'),
       PARTITION p04 VALUES IN ('communications'),
       PARTITION p05 VALUES IN ('fees')
    );
    

    範囲列の例:

    CREATE TABLE range_test (
       code CHAR(3),
       value INT
    )
    PARTITION BY RANGE COLUMNS(code) (
       PARTITION p0 VALUES LESS THAN ('MMM'),
       PARTITION p1 VALUES LESS THAN ('ZZZ')
    );
    

    さらに読む:



    1. SQLServerのメッセージ8116「引数データ型varcharがsession_context関数の引数1に対して無効です」を修正しました

    2. SQL ServerManagementStudioでのテーブル編集後の変更の保存

    3. 主キーのないテーブルの重複行を削除します

    4. *アラート*WindowsUpdateは純粋なAccessアプリケーションを壊します–修正が利用可能です