用create table 表名 as 创建表时可以指定表空间吗
发布网友
发布时间:2022-04-13 17:02
我来回答
共2个回答
热心网友
时间:2022-04-13 18:31
答案是肯定的,语句如下:
create table tb_jg_sd tablespace emsdatan as select * from tb_jg where jgfl='sd';
这个语句一次完成建表和数据插入,无需回滚,效率是很高的,而下面分步进行的语句效率就低多了:
create table TB_JG
(
CITY VARCHAR2(10) not null, --城市
CITY_CODE VARCHAR2(10) not null, --城市简码
SSXS VARCHAR2(10) not null, --市县
XS_CODE VARCHAR2(10) not null, --市县简码
ZJ_CODE VARCHAR2(10) not null, --机构代码
ZJ_MC VARCHAR2(50) not null, --机构名称
JGFL VARCHAR2(10) not null, --机构分类(邮政/速递)
CXFL VARCHAR2(10) not null, --城乡标志(1:城市 2:农村)
CXFL VARCHAR2(10) not null --直达标志(1:直达 2:偏远非直达)
) tablespace emsdatan;
insert into tb_jg_sd select * from tb_jg where jgfl='sd';
commit;
创建索引也可以指定表空间,如下列语句:
alter table TB_EVT_ROUTE_BAG_RELA
add primary key
(BAG_ID,ROUTE_CRT_ORG_CODE,ROUTE_RCV_ORG_CODE,ROUTE_ACTN_CODE,ROUTE_SEQ_NUM,ROUTE_KIND_CODE,
ROUTE_CRT_DATE,LABEL_STRIP,LABEL_KIND_CODE)
using index tablespace emsidx;
create index ITB_EVT_ROUTE_BAG_RELA on TB_EVT_ROUTE_BAG_RELA
(ROUTE_CRT_ORG_CODE,ROUTE_RCV_ORG_CODE,ROUTE_ACTN_CODE,ROUTE_SEQ_NUM,ROUTE_KIND_CODE)
tablespace emsidx;