数据库中使用create table…as select *语句要注意什么

58次阅读
没有评论

共计 1894 个字符,预计需要花费 5 分钟才能阅读完成。

这篇文章主要介绍数据库中使用 create table…as select * 语句要注意什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1、再做一些数据迁移时候,很多人会使用 create table  as select * from table where id=- 1 的方式来年建立一摸一样的表,但是这样做有个很大的弊端,不能将原表中的 default value 也一同迁移过来。

2、  Using the CREATE TABLE … AS SELECT … command: This command will copy acrooss to the new table all the data,but the constraints triggers ,and so on will not be transferred to the new table.

        那些都是 not null 约束,其他的约束和 trigger 是带不过来了,严格说来 not null 也是约束的一种,只不过教材上把它排除在外了吧。

慎用 create table as select, 一定要注意默认值的问题

oraclecreate talbe as select 数据库迁移  

再做一些数据迁移时候,很多人会使用 create table  as select * from table where id=- 1 的方式来年建立一摸一样的表,但是这样做有个很大的弊端,不能将原表中的 default value 也一同迁移过来,可以看下面的例子:

第一,新建一个表

— Create table

create table table01

(

  id        number(16),

  add_date  date default sysdate,

  status    number(1),

  entp_code varchar2(200)

)

第二,使用 create table table02 as

select * From table01 where id=-1

第三、看看两个表的结构,会发现第二张表的 defaule value 没有了,如下 2 图,可以很明显看出来,表 02 的 add_date 的默认值得 sysdate 没有了

table01 的表结构

table02 的表结构

Create table as select 性能简介:

在数据库中移动数据最快的方法是将其从一个表移动到别一个表,而不是需要进入操作系统将数据从一个表移动到别一个表,有一些常见的方法可用于提高数据迁移的性能:

1.  调整表的结构(删除索引和触发器)

2.  在数据迁移期间禁用约束

3.  使用提示和选项来改进事务性能

第一个技巧是调整表的结构,它涉及禁用目标表上面的任何触发器或索引。例如,如果在目标表上有行级触发器,则插入到表中的每一行都会执行触发器。如果可能的话,最好在数据插入之前将目标表的触发器禁用;如果应该为每个插入的行执行该触发器,则可以在批量插入完成以后再创建此触发器,而不应该在批量插入期间每插入一条数据重复执行触发器。

除了禁用触发器,应该在启动数据加载之前删除目标表上面的索引,然后在数据加载完毕后再重新创建索引。如果索引留在表上,ORACLE 将在插入每一行时动态管理索引。

注意:删除索引和禁用触发器可以解决大多数数和大型表与表之间数据迁移中遇到的性能问题。

除了禁用索引,还要考虑到表上的约束。如果源数据已经在数据库的表中,在将数据加载到目标表之前,可以检查该数据了解它的相关约束(例如外键或 check 约束),一旦加载数据完成就可以重新启用这些约束。

如果以上选项无法提供适当的性能,就应该调查 Oracle 为数据迁移调整引入的选项。这些选项包括如下:

1.插入命令的 APPPEND 提示   类似于 Direct  Path Loader,APPENED 提示将数据块加载到表中,从表的高水位线开始。使用 APPENED 提示可以增加空间利用率。

2.Nologging 选项   如果正在执行 create  table as select  命令,使用 nologing 选项可避免在操作期间写入重做日志文件。

3.并行选项   并行查询使用多个进程来完成一个任务。对于 create  table as select 命令,可并行化 create table  部分和查询部分。如果使用并行选项,则也应该使用 nologing 选项,否则并行操作将不得不由于串行化写入到联机重做日志文件而等待。

在使用这些高级选项之前,应该首先调查目标表的结构,确保已经避免前面提到的一些常见问题。

以上是“数据库中使用 create table…as select * 语句要注意什么”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-20发表,共计1894字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)