2011-02-23 27 views
7

¿Cómo crear una tabla en la memoria que sea idéntica a la tabla "normal"? Quiero una copia sin índices y restricciones. Puro SQL (sin herramientas externas).¿Cómo copiar la estructura de la tabla MySQL a la tabla en la memoria?

esto funciona (sin embargo se crean los índices):

create table t_copy (like t_original) 

Esto no es así:

create table t_copy (like t_original) engine=memory 
+0

que respondieron a esta abajo. La parte 'Esto no' que dijiste estuvo casi cerca. Simplemente ponga (como t_original) en la parte posterior de la consulta. – RolandoMySQLDBA

Respuesta

6

Esto debe conseguir que una mesa vacía y sin ningún índice.

create table t_copy 
    select * 
     from t_original 
     where 0 
9
CREATE TABLE t_copy ENGINE=MEMORY SELECT * FROM t_original; 

De hecho, me lo han probado, funciona !!!

mysql> show create table queue\G 
*************************** 1. row *************************** 
     Table: queue 
Create Table: CREATE TABLE `queue` (
    `ndx` int(11) NOT NULL AUTO_INCREMENT, 
    `folderid` int(11) NOT NULL, 
    PRIMARY KEY (`ndx`) 
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 
1 row in set (0.02 sec) 

mysql> create table queue_memory engine=MEMORY as select * from queue; 
Query OK, 0 rows affected (0.05 sec)<BR> 
Records: 0 Duplicates: 0 Warnings: 0<BR> 

[email protected] (DB test) :: show create table queue_memory\G 
*************************** 1. row *************************** 
     Table: queue_memory 
Create Table: CREATE TABLE `queue_memory` (
    `ndx` int(11) NOT NULL DEFAULT '0', 
    `folderid` int(11) NOT NULL 
) ENGINE=MEMORY DEFAULT CHARSET=latin1 
1 row in set (0.00 sec) 

Pruébalo !!!

4

Para crear una tabla en memoria con la misma estructura e índices como la primera mesa, probar:

create table t_copy like t_original; 
alter table t_copy engine=mem; 
Cuestiones relacionadas