在SQL Server存储过程中何时使用临时表以及何时使用游标。这是明智的选择吗?
答案 0 :(得分:20)
如果有可能避免游戏就像瘟疫一样。 SQL Server是基于集合的 - 在RBAR(逐行排列)方式中你需要做的任何事情都会变得缓慢,迟缓,并且违背SQL工作原理的基本原则。 p>
你的问题很模糊 - 根据这些信息,我们无法真正说出你想要做什么。但主要建议仍然是:尽可能(并且在绝大多数情况下都可能),使用基于集合的操作- SELECT, UPDATE, INSERT
并加入 - 不要强迫您对SQL Server进行程序性思考 - 这不是最好的方法去。
因此,如果您可以使用基于集合的操作来填充和使用临时表,我希望每次都使用该方法而不是游标。
答案 1 :(得分:7)
游标逐行工作,表现极差。几乎在所有情况下,它们都可以被更好的基于集合的代码替换(通常不是临时表)
临时表可以是好的还是坏的,具体取决于数据量以及您使用它们的方式。它们通常不是光标的替代品。
建议你读这个: http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them