与同事讨论SQL性能,并提出了维护运营数据存储表的主题。我的同事(比我经验丰富得多)坚持认为删除表,重新创建它并插入所有记录比在数据更新时对表执行标准DML操作更快。作为我的怀疑论者,以及我以前的编程背景(在R中),对我来说似乎完全违反直觉。
单个记录是约。 1.6 KB,分布在约。 50列。记录计数因业务流程而异,但表的大小范围最小,大约为25000条记录,最大值大约为25000000条。典型数据加载到ODS表中,查看每个表每天创建或修改0到500条记录。
哪个选项更高效,保留一个索引良好的表并使用vanilla DML操作(INSERT
,UPDATE
,DELETE
)vs两个DML操作(DROP TABLE
, CREATE TABLE
}只有一次INSERT
操作?
答案 0 :(得分:-1)
如果您不需要表记录或需要恢复它们,那么最佳性能是截断表。它将保留您的架构和表定义,因此您不必重新创建它,它将删除所有记录(虽然不可恢复),然后允许您插入所有新记录。在插入中,您的表将创建一个新索引。截断不记录更改,使其更有效。