Chr*_*son 10 sql t-sql sql-server sql-server-2005
我有一个返回表的sql函数.该表通过大约6个相当复杂的语句填充.
这些声明对于UNION来说是否更好,所以只有一个插入或者这些是否更好地分开?
或者它没有任何区别?
我会建议单独插入。我发现与单独的刀片相比,带有 Union All 的刀片的性能非常差。我尝试使用这两种方法插入大约 3500 条记录,单独的插入语句要快 4 倍。(它可能因插入中的列数而异)
而是自己思考什么是最好的解决方案,我建议使用正确的工具.
在使用Managment Studio的SQL Server中,您可以评估性能Display Estimated Execution Plan.因此,通过这种方式,您可以真正看到两种情况之间的差异,并通过观察结果选择最佳情况.
实际上,它确实有所作为。
当您有单独的INSERTs 时,您必须小心地在事务中进行,以便您始终拥有一致的状态。但是,由于它们是独立的,服务器完成所需的内存量较少,因为每个INSERT都有自己的结果集 - 当查询完成时,服务器可以自由地执行另一个查询等......
当您将所有内容都放在一个由UNION ALL服务器连接的大查询中时,将需要更多的临时表和更多的内存来完成。但是,通过这种方式,您可以进行“批量”插入,并且可能会导致插入速度更快。
就个人而言,我会在事务中使用单独的插入。有时,在可维护性和调试方面,简单地完成一些事情比一些小的性能提升更有益(如果有的话,取决于实际插入的行数)