回答
在用户定义函数中,我没有看到使用某个用户的理由。 A UNION
有可能比单独的陈述更受限制...
我想看看函数的细节,它的用途,因为它可能根本不需要。
我只是UNION ALL
他们 - 关键不存在UNION
(这可能会减少重复效率),但UNION ALL
。
ahh,工会全部,这是一个好点 – 2010-08-31 21:48:39
我会试试看,因为只是“联盟”非常缓慢,不幸的是。 5行,1列,相同的值需要10秒。 'UNION ALL'只需不到1秒。谢谢你的提示! – 2013-09-25 11:23:25
而不是自己想想什么是我建议作为使用正确的工具提示的最佳解决方案。
在使用Managment Studio的SQL Server中,您可以通过Display Estimated Execution Plan
来评估性能。因此,通过这种方式,您可以真正看到两种情况之间的差异,并通过观察结果来选择最好的一种。
其实,它确实有所作为。
当您有单独的INSERT
时,您必须小心地在交易中执行此操作,以便始终保持一致的状态。但是,由于它们是分开的,因此服务器完成所需的内存量较少,因为每个INSERT
都有它自己的结果集 - 当查询完成后,服务器可以自由执行另一个查询等...
当你有一个大的查询加入UNION ALL
内的一切,服务器将需要更多的临时表和更多的内存来完成。但是,通过这种方式,您可以使用“批量”插入,并且可以加快插入速度。
就我个人而言,我会在事务中使用单独的插入。有时候,仅仅通过简单的操作就可维护性和调试方面来说比一些小的性能增益(如果有的话,取决于实际插入的行的数量)更有益处
你可能会不同意,但在这种情况下,我不相信我需要交易。没有数据由于这些语句而被更新,只会呈现给用户,所以如果在整个事情完成之前记录发生变化,那对我来说并不重要。感谢您的输入。 – 2010-08-31 22:53:46
好吧,这是单独插入的另一个原因,因为交易不适用它会更快... – veljkoz 2010-08-31 23:06:48
我同意这一点。根据我的经验,UNION可能会不必要地减慢插入过程,因为首先创建联合所需的时间(和内存)。而且即使在需要时,交易仍然可以缠绕在单独的插入物上。如果我们讲纯粹的服务器端数据库工作,我会使用单独的插入。 – user158017 2010-09-01 02:15:06
我会建议单独的插入。我发现使用Union All的插入性能与单独的插入相比非常差。我尝试使用这两种方法插入大约3500条记录,单独的插入语句速度提高了4倍。 (它可能会根据插入的列数而有所不同)
我同意。大约10个不同的桌子大约有1,000,000行 - 单独的插入在6秒内完成,UNION ALL在10分钟后没有完成! – 2016-06-24 11:35:56
- 1. Laravel多个联盟
- 2. 联盟与多个表在MYSQL问题
- 3. Linq to SQL与多个联盟
- 4. 联盟:从联盟的一个数据成员读取以写入另一个联盟
- 5. 联盟或不联盟
- 6. 与一个不同的列联盟
- 7. SQL加入或联盟?
- 8. BEFORE INSERT触发器,在多个插入
- 9. 联盟与ACCESS
- 10. 表多个SQL查询联盟
- 11. 加入两个查询或工会/联盟全部
- 12. 插入行与多个键
- 13. 与插入到多个表
- 14. SQL联盟或其他表加入
- 15. 使用PDO将多个INSERT插入到3个表中
- 16. INSERT INTO后插入与autonumeric
- 17. SQL加入/合并/联盟基于日期的多个表
- 18. 从一个联盟分组SQL结果
- 19. C++ - 不能够访问一个联盟
- 20. TSQL - 订单查询一个联盟内
- 21. 如何联盟从同一个表
- 22. 批量插入或一个接一个
- 23. 与地图联盟?
- 24. 在Android 2.3.5插入多个联系人
- 25. 串联期间插入多个?
- 26. Android NativeActivity:AttachCurrentThread JNIInvokeInterface不是一个结构或联盟
- 27. 联盟两个LINQ查询
- 28. 多次运行MySQL INSERT查询(将值插入多个表)
- 29. Laravel联盟与加入选项
- 30. MySQL的联盟与加入条款
有可能在没有工会的情况下在单个插入中执行此操作,但它非常麻烦(相信我,我已经走了) – 2010-08-31 21:47:37