Vanilla DML操作与DROP,RECREATE,(RE)INSERT - 哪个更高效?

时间:2017-02-09 10:48:42

标签: sql-server sql-server-2014 ddl dml

与同事讨论SQL性能,并提出了维护运营数据存储表的主题。我的同事(比我经验丰富得多)坚持认为删除表,重新创建它并插入所有记录比在数据更新时对表执行标准DML操作更快。作为我的怀疑论者,以及我以前的编程背景(在R中),对我来说似乎完全违反直觉。

单个记录是约。 1.6 KB,分布在约。 50列。记录计数因业务流程而异,但表的大小范围最小,大约为25000条记录,最大值大约为25000000条。典型数据加载到ODS表中,查看每个表每天创建或修改0到500条记录。

哪个选项更高效,保留一个索引良好的表并使用vanilla DML操作(INSERTUPDATEDELETE)vs两个DML操作(DROP TABLECREATE TABLE}只有一次INSERT操作?

1 个答案:

答案 0 :(得分:-1)

如果您不需要表记录或需要恢复它们,那么最佳性能是截断表。它将保留您的架构和表定义,因此您不必重新创建它,它将删除所有记录(虽然不可恢复),然后允许您插入所有新记录。在插入中,您的表将创建一个新索引。截断不记录更改,使其更有效。