我有一个返回表中的SQL函数。该表是通过6个左右的合理复杂的语句填充。
它是更好地UNION一起这些语句,因此只有1插入或在这些更好的分开?
或者它使没有任何区别?
在用户自定义函数,我没有看到一个理由使用一个比其他。一个UNION
有可能比单独的语句多个约束的潜力......
我想看到的功能细节,它的使用,因为它可能它可能没有必要在所有。
我正UNION ALL
他们 - 关键不存在UNION
(这可能是通过重复数据删除效率较低),但UNION ALL
。
相反,通过自己思考什么是最好的解决办法,我建议作为小费使用正确的工具。
在使用枭雄工作室SQL服务器,你可以评估由Display Estimated Execution Plan
性能。因此,在这种方式,你可以真正看到您的两病例之间的差异,并通过观察结果中选择最好的一个。
实际上,它确实有差别。
当你有独立的INSERT
s,你必须照顾到做一个事务中,让你在任何时候都具有一致的状态。但是,因为他们是独立的内存来完成所需服务器的数量较少,因为每个INSERT
有它自己的结果集 - 当查询完成,服务器可以自由地执行另一个查询等...
当你通过UNION ALL
服务器将需要更多的临时表和更多的内存来完成加入一个大的查询里面的一切。但是,这样一来你有一个“散装”插入的东西,可能会导致更快的插入。
就个人而言,我会用在一个事务中单独插入去。有时候,单单是做事情更简单的是在维护和调试比一些小的性能提升方面的方法更有益(如果有的话,取决于实际得到插入的行数)
我会建议单独的刀片。我发现相比于单独的刀片与联盟的所有插件的性能是非常差的。我试着将围绕3500记录同时使用方法,独立的INSERT语句是快4倍。 (它可能在你插入的列数不同)
UNION
V / S UNION ALL
不相同功能。使用UNION
,因为它会尝试消除重复和潜在的可能不是你原来想要的结果时务必谨慎。
关于这个问题,多INSERT
(S)可能会更快给予较少数量的记录相比,UNION ALL