merge table
読んで字の如く、テーブルを結合します。
肥大化したログテーブルとか、変更・削除はしないけど、残しておかないといけない売上情報を格納しているテーブルとかに使えます
使い方
マージ元(現在レコード数が多数で拡張したいテーブル)をtbl
マージ先(新たに追加するテーブル)をtbl_b
とします
・まず、tblをtbl_aというテーブルにリネームします。
rename table tbl to tbl_a;
・次にtbl_aと同じ構造のテーブルtbl_bを作成します
create table tbl_b (show create table tbl_a)
※エラーが出る場合あshow create分までを実行して確認⇒実行で
・元のテーブルtblを作成。ここで注意すべきはpkeyは定義しない
CREATE TABLE tbl (.....) TYPE=MERGE UNION=(tbl_a, tbl_b) INSERT_METHOD=LAST;
これでtblに対してinsertを行うとtbl_bにデータが格納されます。
見かけ上はtblに入るのでtblにSELECTを実行することでtbl_a,tbl_b両方のデータが参照できます。
tblをdrop⇒tbl_c追加⇒再度tblをcreate
で後から追加も可能です。
[自分へのtodo]
マージ元のテーブルを圧縮できたり、圧縮すると容量が何分の1かになるとか
後は圧縮すると読み出ししかできないとか・・
データの種類によるんだろうけど、レコードの物理削除・論理削除ってのはいつも悩みますねorz
運用の方針で決まるんでしょうが、開発側としては物理削除は避けたい傾向があるような気がします