首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“截断-创建为选择”而不是更新

“截断-创建为选择”而不是更新
EN

Stack Overflow用户
提问于 2014-08-06 10:12:23
回答 2查看 655关注 0票数 0

我有一个大数据表,我想更新它。我有办法做到这一点。首先,复制原表并对其进行中继。之后,我将使用create作为表副本的select。所以我不会使用更新表达式。这样会更有效吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-06 11:36:58

问题的答案实际上取决于有多少行受到更新的影响。显然,将100,000,000行复制到另一个表以更新一行是无效的。要更新所有这些内容,可能是有益的,因为插入通常比更新更快。

在进行此路径之前,我希望了解更新了多少行。如果不是很多,那么适当的索引可能会提高更新的性能。

然而,您的方法的逻辑并不完全正确。我愿意这样做:

代码语言:javascript
复制
create table temp_copy as
    select . . .
    from bigtable . . .;

你的逻辑进入了select。然后,截断大表并重新插入:

代码语言:javascript
复制
truncate table bigtable;

insert into bigtable
    select *
    from temp_copy;
票数 1
EN

Stack Overflow用户

发布于 2014-08-06 11:47:14

谁把桌子截短了?我假设您的表上没有约束(如果您不能执行截断!)。命令重命名更简单;它将与其他方法一样简单。您可以这样做(我接受您的代码):

你的代码:

代码语言:javascript
复制
truncate  table table1; 
insert into table1 select * from table1_copy

代之以:

代码语言:javascript
复制
drop table table1 ;
alter table table1_copy rename to table1;
recreate index of  table1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25157698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档