仮想列パーティションを使用すると、他の列のデータを使用する式をパーティション分割し、これらの列で計算を実行できます。
仮想列パーティショニングは、すべてのパーティショニング方法をサポートします。 クエリ条件が列に直接キャプチャされるのではなく、計算されたデータであり、計算された値を格納するために単一の列を追加したくない場合は、仮想列を追加することを検討できます。
次の例では、salesテーブルを使用しています。 顧客確認番号には、車を受け取る場所として2文字の地方名が含まれています。 レンタカー分析は通常、エリアパターンを評価するため、州ごとにテーブルを分割できます。
テーブルの「セール」を作成 (
'id' int (11) NOT NULL,
'customer_id' int(11) NOT NULL、
'confirmation_number' varchar (12) NOT NULL,
'order_id' int (11) DEFAULT NULL、
'order_type' varchar (10) DEFAULT NULL,
'start_date' 日付NOT NULL,
'end_date' 日付DEFAULT NULL、
'province 'varchar(12) 常に生成されている (substr('confirmation_number' 、9,2)) 仮想
) エンジン=InnoDB
リストコラムによるパーティー (州)
ハッシュによるサブパーティー ('customer_id')
サブパート16
(PARTITION p_cn_north VALUES IN ('BJ' 、'TJ' 、'HB' 、'NMG')) 、
PARTITION p_cn_south VALUES IN ('GD' 、'GX' 、'HN') 、
PARTITION p_cn_east VALUES IN ('SH' 、'ZJ' 、'JS'); 上記の例では、確認番号列から派生した仮想列としてprovince列が定義されています。 仮想列は行の移動をサポートし、ストレージは必要ありません。 仮想列が別のパーティションの行に対して異なる値を計算した場合、データベースはその行を別のパーティションに移行します。