如何在内存中创建一个与"常规"表相同的表?我想要一个没有索引和约束的副本.纯SQL(没有外部工具).
这有效(但是创建了索引):
create table t_copy (like t_original)
Run Code Online (Sandbox Code Playgroud)
这不是:
create table t_copy (like t_original) engine=memory
Run Code Online (Sandbox Code Playgroud)
Rol*_*DBA 10
CREATE TABLE t_copy ENGINE=MEMORY SELECT * FROM t_original;
Run Code Online (Sandbox Code Playgroud)
我实际上尝试过,它的工作原理!
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)
Run Code Online (Sandbox Code Playgroud)
试试看 !!!
这应该会得到一个没有任何索引的空表.
create table t_copy
select *
from t_original
where 0
Run Code Online (Sandbox Code Playgroud)
要创建与第一个表具有相同结构和索引的内存表,请尝试:
create table t_copy like t_original;
alter table t_copy engine=mem;
Run Code Online (Sandbox Code Playgroud)