Sql server 使用INSERT vs UPDATE(性能vs清晰度)更新表

Sql server 使用INSERT vs UPDATE(性能vs清晰度)更新表,sql-server,insert,sql-update,Sql Server,Insert,Sql Update,我以增量方式更新我的大表。我的大表是许多表连接的结果。在我的查询中有如此多的so表的联接,以至于它变得像迷宫一样,我在添加另一个联接以获取表中的另一列时遇到了一个问题 您是否建议通过添加另一个联接使查询更加复杂?所有这些都是为了在表中插入一个。或者,您建议将查询分为两个查询—一个是insert,然后是update。在第二个查询中,只需根据查询更新列 我可以想象,所有列中的一个插入可能比插入少数列并更新其余列的小更快。但联接中表的数量至少在清晰性方面有其限制。这里的最佳实践是什么 你听说过这个声明

我以增量方式更新我的大表。我的大表是许多表连接的结果。在我的查询中有如此多的so表的联接,以至于它变得像迷宫一样,我在添加另一个联接以获取表中的另一列时遇到了一个问题

您是否建议通过添加另一个联接使查询更加复杂?所有这些都是为了在表中插入一个。或者,您建议将查询分为两个查询—一个是
insert
,然后是
update
。在第二个查询中,只需根据查询更新列

我可以想象,所有列中的一个插入可能比插入少数列并更新其余列的小更快。但联接中表的数量至少在清晰性方面有其限制。这里的最佳实践是什么

你听说过这个声明吗?处理同一查询中的插入/更新/删除。Aaron Bertrand有一篇文章谈到了它的缺陷,但总的来说,它有助于简化您必须执行的任何操作:

至于您的问题,从维护角度和从索引调优角度来看,将这两个操作分开会更有好处。向表中添加另一个联接不会使查询变得复杂。这就是RDBMS应该如何工作的。注释良好的代码和简洁的命名标准应该让阅读查询的人清楚地看到任何连接

如果添加另一个连接会使更新/插入过程复杂化,那么是的,将其分解。如果只是破译查询所做的事情,但是操作很好,那么给它一些上下文和注释

在这类事情上寻求最佳实践往往会让人们说“这要看情况而定”。这是一个广泛的主题,可以通过多种方式处理,具体取决于你的情况。有些行数很小但不希望它变大的人可以通过一个稍微昂贵的操作侥幸逃脱。如果一个拥有大量行数(数百万)的人一直让服务器瘫痪,那么他很可能正在寻找新的工作