![]() |
1
13
截断将比删除更快,因此如果需要清空表,请执行该操作。 您没有指定RDBMS供应商,但其中一些供应商也指定了 合并/上列 命令这使您可以在数据存在时更新表,如果数据不存在则插入 |
![]() |
2
1
这部分取决于如何访问数据。如果您有一段时间没有(或很少)用户访问它,那么短时间内不会对数据消失(在删除和插入完成之间)产生太大影响。 |
![]() |
3
1
您是否考虑过使用物化视图(MSSQL将其称为索引视图)而不是手动执行?由于索引视图在为引用视图中表的其他查询构建执行计划时为查询优化器提供了更多的选择,因此这也可能具有其他性能优势。 |
![]() |
4
0
它取决于表的大小和数据库上的恢复模型。如果要删除数十万条记录并恢复它们,而不是更新一小批几百条记录并插入数十行,则会给事务日志增加不必要的大小。但是,您可以使用truncate来绕过这个问题,因为它不会影响事务日志。 您有合并/升级选项吗?如果您使用的是MS-SQL,则可以使用交叉应用来执行类似的操作(如果不使用)。 |
![]() |
5
0
处理此类问题的一种方法是插入到新表中,然后执行表重命名。这将确保所有新数据同时出现。 |
![]() |
6
0
如果昨天的一些数据已经不复存在了呢?删除可能更安全,也可能最终删除一些记录。 最后,你走哪条路并不重要。 除非在案件中提到 |
![]() |
7
0
尽管我完全同意 SQLMenace's answer 我想指出合并确实 不是 删除不需要的记录!如果您确定您的新数据将是现有数据的超级集,那么合并非常好,否则您将需要确保稍后删除任何多余的记录,或者使用truncate+insert方法… (就我个人而言,我仍然是后者的粉丝,因为它通常很快,只需确保预先除去所有索引/唯一约束,然后逐个重新构建它们。这样做的好处是插入事务更小,索引添加在(较小的)事务中稍后再次进行)。(**) (**:是的,这在实时系统上可能很棘手,但他再次提到这是在某个晚上完成的,无论如何,我是 外推 当时没有用户访问权限) |
![]() |
Jack Skeletron · T-SQL三表求和 7 年前 |
![]() |
CSK · 列出sql server中存储过程中的存储过程 7 年前 |
![]() |
DRT · 从文本字段中提取多个日期 7 年前 |
![]() |
ihatemash · 确定可以合并哪些行的SQL查询 7 年前 |
![]() |
Shawn · 使用WinZip命令行的SQL Server作业 7 年前 |