Les tables MERGE ont été ajoutée en MySQL
      version 3.23.25. Ce type de table est aussi connu sous le nom de
      MRG_MyISAM. Le code raisonnablement stable.
    
      Une table MERGE est un groupe de tables
      MyISAM identiques qui sont utilisées comme une
      seule. ``Identique'' signifie que toutes les tables ont la même
      structure de colonnes et d'index. Vous ne pouvez pas regrouper des
      tables qui ont des index dans un ordre différent. Toutefois, une
      ou plusieurs tables peuvent être compressées avec
      myisampack. See Section 8.2, « myisampack, le générateur de tables MySQL
      compressées en lecture seule ».
    
      Lorsque vous créez une table MERGE, MySQL
      crée deux fichiers sur le disque. Les fichiers ont pour nom celui
      de la table, et ont un extension qui indique le type de fichiers.
      Le fichier .frm stocke la définition de la
      table, et le fichier .MRG contient les noms
      des tables qui doivent être utilisées. Originalement, toutes les
      tables utilisées dans la même table MERGE
      devaient être dans la même base que la table
      MERGE . Cette restriction a été levée en
      MySQL 4.1.1.
    
      Pour le moment, vous avez simplement besoin des droits de
      SELECT, UPDATE et
      DELETE sur les tables que vous avez rassemblé
      dans la table MERGE.
    
      L'exemple suivant vous montre comme utiliser les tables
      MERGE :
    
mysql>CREATE TABLE t1 (->a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,->message CHAR(20));mysql>CREATE TABLE t2 (->a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,->message CHAR(20));mysql>INSERT INTO t1 (message) VALUES ('Testing'),('table'),('t1');mysql>INSERT INTO t2 (message) VALUES ('Testing'),('table'),('t2');mysql>CREATE TABLE total (->a INT NOT NULL AUTO_INCREMENT,->message CHAR(20), INDEX(a))->TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
      Notez que la colonne a est indexée dans la
      table MERGE, mais elle n'est pas déclarée
      comme PRIMARY KEY comme elle peut l'être dans
      les tables MyISAM sous-jacente. C'est
      nécessaire car une table MERGE ne peut pas
      assurer l'unicité de valeurs à travers les tables.
    
      Après la création de la table MERGE, vous
      pouvez faire des commandes comme :
    
mysql> SELECT * FROM total;
+---+---------+
| a | message |
+---+---------+
| 1 | Testing |
| 2 | table   |
| 3 | t1      |
| 1 | Testing |
| 2 | table   |
| 3 | t2      |
+---+---------+
      Pour redéfinir une table MERGE avec un autre
      groupe de tables MyISAM, vous pouvez faire
      ceci :
    
      Notez que vous pouvez aussi manipuler le fichier
      .MRG directement, à l'extérieur du serveur
      MySQL :
    
shell>cd /mysql-data-directory/current-databaseshell>ls -1 t1 t2 > total.MRGshell>mysqladmin flush-tables
          Effacez la table avec la commande DROP,
          puis recréez la.
        
          Utilisez ALTER TABLE tbl_name UNION=(...)
          pour redéfinir les tables regroupées.
        
          Modifiez le fichier .MRG et utilisez la
          commande FLUSH TABLE sur la table
          MERGE et toutes les tables sous-jacentes,
          pour forcer le gestionnaire à relire la définition.
        
      Les tables MERGE peuvent vous aider dans les
      situations suivantes :
    
          Gérer facilement un jeu de tables d'historique. Par exemple,
          vous pourriez placer les données de chaque mois dans un
          fichier séparé, en compresser certains avec
          myisampack puis créer une table
          MERGE pour les utiliser.
        
          Vous donner plus de vitesse. Vous pouvez répartir les grandes
          tables en lecture seule dans différentes parties du disque.
          Une table MERGE bâtie de cette fa¸on peut
          être plus rapide qu'une grosse table (vous pouvez aussi et
          bien sûr, utiliser un système RAID pour arriver aux mêmes
          avantages).
        
          Effectuer des recherches plus efficaces. Si vous savez
          exactement ce que vous recherchez, vous pouvez faire des
          recherches dans une seule des tables individuelles pour les
          recherches, et utiliser la table MERGE pour
          les autres opérations. Vous pouvez même avoir de nombreuses
          tables MERGE actives, qui partagent les
          même fichiers.
        
          Des réparations plus efficaces. Il est plus facile de
          réparer les fichiers individuels qui sont rassemblés dans
          une table MERGE que de réparer une grande
          table.
        
          Fusion instantanée de plusieurs tables en une seule. Une
          table MERGE utilise les index des tables
          individuelles. Il n'y a pas besoin de gérer un seul index.
          Cela rend les tables MERGE
          très rapides à faire ou défaire. Notez
          que vous devez spécifier les définitions de clés lorsque
          vous créez la table MERGE!
        
          Si vous avez un jeu de table que vous rassemblez dans une
          grande à la demande ou pour un traitement batch, vous devriez
          utiliser une table MERGE. C'est bien plus
          rapide, et cela va vous faire économiser de l'espace disque.
        
Contourner les limitations de taille du système d'exploitation.
          Vous pouvez créer un alias ou un synonyme pour une table, en
          utilisant simplement MERGE sur une seule.
          Il n'y a pas de coûts particulier en performance (hormis
          quelques appels de fonctions indirects, et des
          memcpy() avant chaque lecture).
        
      Les inconvénients des tables de type MERGE
      sont :
    
          Vous devez utiliser des tables MyISAM
          identiques pour faire une table MERGE.
        
          MERGE utilise plus de pointeurs de
          fichiers. Si vous utilisez une table MERGE
          qui couvre 10 tables et que 10 utilisateurs l'utilisent, vous
          consommez 10*10 + 10 pointeurs de fichiers (10 fichiers de
          données, et 10 utilisateurs avec 10 fichiers d'index).
        
          Les lectures de clés sont plus lentes. Lorsque vous faîtes
          une lecture sur une clé, le gestionnaire
          MERGE doit faire une lecture dans tous les
          fichiers d'index des tables sous-jacentes, pour vérifier
          lequel est le plus proche de la valeur recherchée. Si vous
          faîtes une lecture du type "lit le suivant", le gestionnaire
          de table assemblée doit rechercher dans tous les buffers de
          clés pour la trouver. Uniquement lorsqu'un buffer clé est
          complet, doit il lire le prochain bloc. Cela rend l'accès aux
          clés MERGE bien plus lent que les
          recherches eq_ref, mais pas aussi lent que
          les recherches de type ref. Voyez la
          section Section 7.2.1, « Syntaxe de EXPLAIN (Obtenir des informations sur les
        SELECT) » pour plus d'informations sur
          eq_ref et ref.
        
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
