我有几个查询使用WITH子句或公用表表达式与UNION ALL语句重复通过SQL服务器中具有树状结构的表,如here所述。如果我要创建相同的VIEW而不是将它包含在WITH子句中并且每次运行查询时生成它,我会看到性能上的差异吗?通常认为实际创建视图是一种好习惯,因为它在多个查询中使用了吗?
答案 0 :(得分:4)
您所看到的是Common Table Expression而不是View。如果您正在进行recursion,则需要坚持使用CTE,而不是尝试将其转换为视图。
MS SQL中的视图除非您creating clustered indexes,否则不会给您带来任何性能优势。从问题的声音来看,情况并非如此。你可能最好将CTE封装在stored procedure内。