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

7
如何创建与“常规”表相同的内存表?我想要一份没有索引和约束的副本。使用纯SQL(不使用外部工具)。
以下方法可以实现(但是会创建索引):
create table t_copy (like t_original)

这不行:

create table t_copy (like t_original) engine=memory

我在下面回答了这个问题。你提供的“这不是”部分几乎正确。只需将“(像t_original一样)”放在查询的末尾即可。 - RolandoMySQLDBA
3个回答

10
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>

lwdba@localhost (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)

来试试看吧!!!


6
这应该会给你一个没有任何索引的空表。
create table t_copy
    select *
        from t_original
        where 0

5

要创建一个与第一个表结构和索引相同的内存表,请尝试以下操作:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接