我有几个查询使用WITH子句或公共表表达式以及UNION ALL语句来重复遍历SQL Server中具有树状结构的表,如所述here http://www.webinade.com/web-development/creating-recursive-sql-calls-for-tables-with-parent-child-relationships。如果我要创建相同的视图而不是将其包含在WITH子句中并在每次运行查询时生成它,我会看到性能上的差异吗?由于在多个查询中使用了视图,因此实际创建视图通常会被认为是好的做法吗?
你正在看的是一个公用表表达式 http://msdn.microsoft.com/en-us/library/ms190766.aspx而不是一个View http://msdn.microsoft.com/en-us/library/ms187956.aspx。如果你正在做递归 http://msdn.microsoft.com/en-us/library/ms186243.aspx,您需要坚持使用 CTE,而不是尝试将其滚动到视图中。
MS SQL 中的视图不会给您带来任何性能优势,除非您创建聚集索引 http://msdn.microsoft.com/en-us/library/ms187864.aspx在他们。从你的提问来看,情况并非如此。您最好将 CTE 封装在存储过程 http://msdn.microsoft.com/en-us/library/ms190782.aspx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)