El motor de almacenamiento MERGE , también
      conocido como MRG_MyISAM , es una colección de
      tablas MyISAM idénticas que pueden usarse como
      una. "Idéntica"significa que todas lsas tablas tienen
      información de columna e índice idéntica. No puede mezclar
      tablas en que las columnas se listen en orden distinto, no tengan
      exactamente las mismas columnas, o tengan los índices en orden
      distinto. Sin embargo, alguna o todas las tablas pueden
      comprimirse con myisampack. Consulte
      Sección 8.2, “myisampack, el generador de tablas comprimidas de
      sólo lectura de MySQL”. Diferencias en las opciones de las
      tablas tales como AVG_ROW_LENGTH,
      MAX_ROWS, o PACK_KEYS no
      importan.
    
      Cuando crea una tabla MERGE , MySQL crea dos
      ficheros en disco. Los ficheros tienen nombres que comienzan con
      el nombre de la tabla y tienen una extensión para indicar el tipo
      de fichero, Un fichero .frm almacena la
      definición de tabla , y un fichero .MRG
      contiene los nombres de las tablas que deben usarse como una. Las
      tablas no tienen que estar en la misma base de datos que la tabla
      MERGE misma.
    
      Puede usar SELECT, DELETE,
      UPDATE, y INSERT en la
      colección de tablas, Debe tener permisos de
      SELECT, UPDATE, y
      DELETE en las tablas que mapea a una tabla
      MERGE.
    
      Si hace un DROP de la tabla
      MERGE , sólo borra la especificación
      MERGE . Las tablas subyacentes no se ven
      afectadas.
    
      Cuando crea una tabla MERGE , debe especificar
      una cláusula
      UNION=(
      que indica qué tablas quiere usar como una. Puede especificar
      opcionalmente una opción list-of-tables)INSERT_METHOD si
      quiere que las inserciones en la tabla MERGE se
      realicen en la primera o última tabla de la lista
      UNION . Use un valor de
      FIRST o LAST para hacer que
      las inserciones se hagan en la primera o última tabla,
      respectivamente. Si no especifica una opción
      INSERT_METHOD o si la especifica con un valor
      de NO, intentos de insertar registros en la
      tabla MERGE producen un error.
    
      El siguiente ejemplo muestra cómo crear una tabla
      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;
      Tenga en cuenta que la columna a está indexada
      en la tabla MERGE , pero no está declarada
      como PRIMARY KEY como lo está en las tablas
      MyISAM subyacente. Esto es necesario ya que una
      tabla MERGE no puede forzar unicidad en un
      conjunto de tablas subyacentes.
    
      Tras crear la tabla MERGE, puede realizar
      consultas que operen en el grupo de tablas como unidad:
    
mysql> SELECT * FROM total; +---+---------+ | a | message | +---+---------+ | 1 | Testing | | 2 | table | | 3 | t1 | | 1 | Testing | | 2 | table | | 3 | t2 | +---+---------+
      Tenga en cuenta que puede manipular el fichero
      .MRG directamente desde fuera del servidor
      MySQL :
    
shell> cd /mysql-data-directory/current-databaseshell> ls -1 t1 t2 > total.MRG shell> mysqladmin flush-tables
      Para rempaear una tabla MERGE a una colección
      diferente de tablas MyISAM, puede realizar una
      de las siguientes opciones:
    
          DROP la tabla MERGE y
          recrearla.
        
          Use ALTER TABLE  para cambiar la lista de tablas
          subyacentes.
        tbl_name
          UNION=(...)
          Cambie el fichero .MRG y realice un
          comando FLUSH TABLE para la tabla
          MERGE y todas las tablas subyacentes para
          forzar al motor de almacenamiento a leer el nuevo fichero de
          definición.
        
      Las tablas MERGE pueden ayudarle a arreglar los
      siguientes problemas:
    
          Administrar fácilmente un largo conjunto de tablas. Por
          ejemplo, puede poner datos de meses distintos en tablas
          separadas, comprimir algunos de ellos con
          myisampack, y luego crear una tabla
          MERGE para usarlas como una.
        
          Obtener más velocidad. Puede dividir una tabla grande de
          sólo lectura basándose en algún criterio, y luego poner las
          tablas individuales en distintos discos. Una tabla
          MERGE puede ser mucho más rápida que usar
          una tabla grande.
        
          Realizar búsquedas más eficientes. Si conoce exactamente lo
          que busca, puede buscar en sólo una de las tablas divididas y
          usar una tabla MERGE para las otras. Puede
          tener distintas tablas MERGE que usen
          conjuntos no disjuntos de tablas.
        
          Realizar reparaciones más eficientes. Es más fácil de
          reparar tablas individuales mapeadas en una tabla
          MERGE que reparar una única tabla grande.
        
          Mapear instantáneamente varias tablas como una. Una tabla
          MERGE no necesita mantener un índice
          propio ya que usa los índices de las tablas individuales.
          Como resultado, las colecciones de tablas
          MERGE son muy rápidas
          de crear o remapear. (Tenga en cuenta que debe especificar las
          definiciones de índices cuando crea una tabla
          MERGE , incluso cuando no se crean
          índices.)
        
          Si tiene un conjunto de tablas que une como una tabla grande
          bajo demanda o batch, debe crear una tabla
          MERGE sobre ellas bajo demanda. Esto es
          mucho más rápido y ahorra mucho espacio de disco.
        
          Excede el límite de tamaño del sistema operativo. Cada tabla
          MyISAM está ligada a este límite, pero
          una colección de tablas MyISAM no lo
          está.
        
          Puede crear un alias o sinónimo para una tabla
          MyISAM definiendo una tabla
          MERGE que mapee a una tabla. No debería
          haber un impacto de rendimiento realmente impactante al hacer
          esto (sólo un par de llamadas indirectas y llamadas
          memcpy() para cada lectura).
        
      Las desventajas de las tablas MERGE son:
    
          Sólo puede usar tablas MyISAM idénticas
          para una tabla MERGE .
        
          No puede usar un número de características
          MyISAM en tablas MERGE .
          Por ejemplo, no puede crear índices
          FULLTEXT en tablas MERGE
          . (Puede crear índices FULLTEXT en las
          tablas MyISAM subyacentes, puero no puede
          buscar en la tabla MERGE con búsquedas
          full-text.)
        
          Si la tabla MERGE no es temporal, todas las
          tablas subyacentes MyISAM deben ser
          permanentes. Si la tabla MERGE es temporal,
          las tablas MyISAM pueden ser cualquier
          mezcla de tablas temporales y no temporales.
        
          Las tablas MERGE usan más descriptores de
          fichero. Si 10 clientes usan una tabla
          MERGE que mapee a 10 tablas, el servidor
          usa (10*10) + 10 descriptores de fichero. (10 descriptores de
          ficheros de datos para cada uno de los 10 clientes, y 10
          descriptores de ficheros de índice compartidos entre los
          clients.)
        
          Las lecturas de claves son más lentas. Cuando lee una clave,
          el motor de almacenamiento MERGE necesita
          leer en todas las tablas subyacentes para chequear cuál se
          parece más a la clave dada. Si luego lee el siguiente, el
          motor MERGE necesita buscar en los buffers
          de lectura para buscar la siguiente clave. Sólo cuando se usa
          un búffer de claves el motor necesita leer el siguiente
          bloque de claves. Esto hace que las claves
          MERGE sean mucho más lentas en búsquedas
          eq_ref , pero no mucho más lentas en
          búsquedas ref . Consulte
          Sección 7.2.1, “Sintaxis de EXPLAIN (Obtener información acerca de
        un SELECT)” para más información sobre
          eq_ref y ref.
        
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

