一般来说,对于组合大量数据,最好使用临时表/临时变量作为临时区域,还是应该坚持使用"UNION ALL"?
假设:
我会坚持UNION ALL.如果不需要进行中间处理,因此需要临时表,那么我就不会使用.
将数据插入临时表(即使它是一个表变量,尽管有神话,但不是纯粹的"内存"结构)将涉及tempdb中的工作(这可能是一个瓶颈).然后只需SELECT*as-is并返回它而不需要任何特殊处理是不必要的,我认为膨胀代码.当你只需要在没有任何特殊处理的情况下返回数据时,临时表方法似乎有点"围绕房屋".如果我认为有理由使用临时表,我会运行一些类似的性能测试来与没有临时表的vs进行比较 - 然后比较统计数据(持续时间,读取,写入,CPU).进行实际的性能测试是尽可能自信的最佳方式,无论您选择哪种方法,都是最好的.特别是因为您不必使用临时表将工作推送到tempdb中 - 即根据您的查询,它可能涉及到tempdb中的工作.
澄清一下,我并不是说一个比另一个更好.与大多数事情一样,这取决于场景.在所描述的场景中,它只是听起来你要添加一个似乎没有添加任何功能值的额外步骤,除了创建稍微复杂/冗长的查询之外,我看不到你获得任何东西.
我能想到的临时表的一个优点是你可以为它们应用索引.因此,在处理需要尽快恢复结果的大量数据时,这应该会有所帮助.
| 归档时间: |
|
| 查看次数: |
6154 次 |
| 最近记录: |