如何将MySQL表结构复制到内存中的表中?

问题描述:

如何在内存中创建与“常规”表相同的表?我想要一个没有索引和约束的副本。纯SQL(无需外部工具)。如何将MySQL表结构复制到内存中的表中?

这工作(但是在创建索引):

create table t_copy (like t_original) 

这不:

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

我下面回答下来。 '这不'你给的部分差不多。只要把(如t_original)放在查询的后面。 – RolandoMySQLDBA 2011-02-24 02:48:45

这应该给你一个空表没有任何索引。

create table t_copy 
    select * 
     from t_original 
     where 0 

CREATE TABLE t_copy ENGINE=MEMORY SELECT * FROM t_original; 

其实我试了一下,它的作品!

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) 

试试看!

要创建一个在内存中的表具有相同的结构和索引作为第一个表,尝试:

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