既に分かっている MERGE
      テーブルの問題点は次のような物です。
    
          MERGE
          テーブルを別のストレージエンジンに変える為に、ALTER
          TABLEテーブルを利用すると、基礎となるテーブルへの位置付けが失われます。その代わりに、基礎となる
          MyISAM
          テーブルのレコードが変化したテーブルにコピーされ、そしてそれは指定されたストレージエンジンを利用します。
        
          REPLACE は機能しません。
        
          MERGE
          テーブルは領域確保をサポートしません。これは、MERGE
          テーブルも、MERGE
          テーブルの基礎となる MyISAM
          テーブルも領域確保ができないという事です。
        
          開いているMERGE
          テーブルにマップされた全てのテーブルに対して、
          WHERE 条項、 REPAIR
          TABLE、 TRUNCATE TABLE、
          OPTIMIZE TABLE、また ANALYZE
          TABLEがない DROP TABLE、
          ALTER TABLE、
          DELETEを使う事はできません。それをすると
          MERGE
          テーブルは元のテーブルを参照する事があるので、好ましくない結果をもたらす可能性があります。このような事を防ぐのに一番簡単なのは、FLUSH
          TABLES
          ステートメントを事前に発行する事によって、全ての
          MERGE
          テーブルを閉じておくという方法です。
        
          MERGE
          ストレージエンジンのテーブル位置づけはMySQLの上位レイヤーから隠れているので、MERGE
          テーブルによって使用されているDROP
          TABLE
          はWindowsでは機能しません。Windowsでは開いているファイルを削除する事はできないので、まず
          MERGE
          テーブルをフラッシュするか( FLUSH
          TABLESを使う)、テーブルをドロップする前にMERGE
          テーブルをドロップする必要があります。
        
          MERGE
          テーブルは、そのテーブル全体に対して一意性制約を保持する事ができません。
          INSERTを行う時、データは最初、または最後の
          MyISAM テーブルに入ります。(
          INSERT_METHOD
          オプションの値による。)MySQLは MyISAM
          テーブルの中では一意の値はそのまま残る事を保障しますが、全てのテーブルのコレクションの中ではそうではありません。
        
          MySQL
          5.1.15以降のバージョンでは、アクセスされた時にMyISAM
          テーブルと MERGE
          テーブルの定義が確認されます。(例 
          SELECT か INSERT
          ステートメントの一部として)。そのように確認する事によって、テーブル定義と親MERGE
          テーブル定義がカラムの順番、タイプ、サイズ、そして関連するインデックスなどに関して一致する事を保障します。テーブル間で違いがあれば、エラーが発生し、ステートメントは失敗します。
        
テーブルが開かれた時にこのようなチェックが行われるので、カラム変更、カラムの順番やエンジンの入れ替え等を含む定義の変更によってステートメントが失敗します。
MySQL 5.1.14 とそれ以前のバージョンにて
              MERGE
              テーブルを修正、または作成する時、基礎となるテーブルがMyISAM
              テーブル内に存在し、それらが同一の構造である事を保証する為の確認は行われません。MERGE
              テーブルが使用される時、MySQL
              は全てのマップされたテーブルの行の長さが等しいかどうかを確認しますが、これは絶対間違いの無い物ではありません。異なるMyISAMテーブルから
              MERGE
              テーブルを作成すると、未知の問題に直面する可能性が高いです。
            
              同じように、MyISAM
              テーブル以外から MERGE
              テーブルを作成したり、または基礎となるテーブルをMyISAM
              テーブル以外にドロップしたり変更したりすると、後でMERGE
              テーブルを使用する時までエラーは発生しません。
            
              基礎となる MyISAM
              テーブルは、MERGE
              テーブルが作成される時には存在する必要がないので、全ての基礎となるテーブルが配置されるまでMERGE
              テーブルを使用しなければ、テーブルをどんな順番で作成しても構いません。また、
              MERGE
              テーブルが与えられた時間内に使用されない事を保障できるのであれば、基礎となるテーブルのバックアップ、リストア、変更、ドロップ、または再作成などのメンテナンスを行う事ができます。基礎となるテーブルに対して作業を行っている間に、それらを除外する為に
              MERGE
              テーブルを一時的に再定義する必要はありません。
            
          MERGE
          テーブル内と、その基礎となるテーブルのインデックスの順番は同一でなければいけません。もしMERGE
          テーブル内で使われるテーブルにUNIQUE
          インデックスを追加する為にALTER
          TABLEを使用し、またMERGE
          テーブルに一意ではないインデックスを追加するためにALTER
          TABLE
          を利用するなら、基礎となるテーブルの中に既に一意ではないインデックスがあれば、テーブルのインデックス順は異なります。(これは、
          重複キーの速やかな検出を促進する為にALTER
          TABLE が UNIQUE
          インデックスを一意でないインデックスの前に置くからです。)その結果、そのようなインデックスを持つテーブルに対するクエリは予想外の結果をもたらします。
        
          もし ERROR 1017 (HY000): Can't find file:
          '
          と同じようなエラーメッセージが出たら、それは通常いくつかのベーステーブルがMyISAMストレージエンジンを使用していない事を表します。全てのテーブルがMyISAMである事を確認してください。
        mm.MRG' (errno:
          2)
          MyISAMにもあるように、MERGE
          テーブルにも232
          (~4.295E+09)行の制限があります。その為、この制限を越える複数のMyISAM
          テーブルをマージする事はできません。しかし、
          MySQLを --with-big-tables
          オプションで作成すると、行の制限は
          (232)2
          (1.844E+19)
          行に増加します。詳しくは項2.9.2. 「典型的な configure オプション」を参照してください。MySQL
          5.0.4バージョンより、全ての標準バイナリはこのオプションで作成されます。
        

