首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MSSQL中,我应该使用临时表还是持久表来暂存和合并数据?

在MSSQL中,我应该使用临时表还是持久表来暂存和合并数据?
EN

Stack Overflow用户
提问于 2012-11-09 16:04:14
回答 2查看 635关注 0票数 2

我有一个表,它需要填充相当多的行,大约每小时数百万行。

现在,我有一个使用实体框架在C#中开发的应用程序,它不支持批量复制。我之前开发了一个使用批量复制的解决方案,这是一个巨大的性能改进。

我一直在将数据复制到临时表,然后将临时表与生产表合并,以解决UNIQUE约束冲突。

现在我的问题是,我是否应该在存储过程中使用临时表作为变量,并在那里执行所有的合并和冲突解决?在当前的解决方案中,我们执行大容量复制,然后调用一个存储过程来合并和清空表。

使用临时表会有什么样的性能影响?

使用临时表被认为是一种糟糕的做法吗?如果有,原因何在?

MSSQL 2012中有没有可以很好地解决这个问题的替代方案?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-09 16:35:17

我是否应该在存储过程中使用临时表作为变量,并在那里执行所有的合并和冲突解决?

我认为最好使用临时表来避免并发执行存储过程时出现的问题,因为该过程的不同实例可以尝试读取和修改相同的行。

使用临时表会有什么样的性能影响?

临时表(以及表变量)存储在tempdb中,因此您可以在那里遇到瓶颈。

使用临时表是否被认为是一种糟糕的做法?

不是的。但是没有必要使用它们,你会做额外的写和读操作,因为首先你通过某个查询读取数据,将其写入临时表,然后再读取数据一次。

票数 1
EN

Stack Overflow用户

发布于 2012-11-09 16:37:34

临时表比较慢,这就是如果可以避免的话我不会使用它们的原因。您可能使用tempTables的唯一原因是如果有多个用户正在使用该过程。在这种情况下,可能会更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13304309

复制
相关文章

相似问题

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