我有使用WITH子句几个查询或公用表表达式,用UNION ALL语句来描述与SQL服务器的树形结构通过表再次出现在这里。如果我创建相同的VIEW而不是将它包含在WITH子句中,并在每次运行查询时生成它,我会在性能上有所不同吗?因为在多个查询中使用视图,所以实际上创建视图通常被认为是一种好的做法吗?
您正在查看的是Common Table Expression,而不是View。如果要进行递归,则需要坚持使用CTE,而不要尝试将其滚动到视图中。
除非您在视图上创建聚簇索引,否则MS SQL中的视图不会给您带来任何性能上的好处。从您的问题的声音来看,情况并非如此。您最好将CTE封装在存储过程中。