【发布时间】:2010-11-16 12:19:45
【问题描述】:
我有几个使用 WITH 子句或公用表表达式的查询,并使用 UNION ALL 语句在 SQL Server 中具有树状结构的表中递归,如 here 所述。如果我要创建相同的 VIEW 而不是将其包含在 WITH 子句中并在每次运行查询时生成它,我会看到性能差异吗?由于它用于多个查询,因此通常认为实际创建视图是一种好习惯吗?
【问题讨论】:
标签: sql sql-server recursion performance
我有几个使用 WITH 子句或公用表表达式的查询,并使用 UNION ALL 语句在 SQL Server 中具有树状结构的表中递归,如 here 所述。如果我要创建相同的 VIEW 而不是将其包含在 WITH 子句中并在每次运行查询时生成它,我会看到性能差异吗?由于它用于多个查询,因此通常认为实际创建视图是一种好习惯吗?
【问题讨论】:
标签: sql sql-server recursion performance
您看到的是Common Table Expression,而不是View。如果您正在使用recursion,则需要坚持使用 CTE,而不是尝试将其滚动到视图中。
MS SQL 中的视图不会给您带来任何性能优势,除非您使用它们的 creating clustered indexes。从你的问题的声音来看,情况并非如此。最好将 CTE 封装在 stored procedure 中。
【讨论】: