在CTE查询中使用更多列会影响性能吗?我目前正在尝试使用with语句执行查询,它认为如果我使用更多的列,加载数据需要更多的时间。我说的对吗?
发布于 2016-05-21 01:32:30
CTE中定义的列数应该不会影响查询的实际性能(它可能会影响编译时间,而编译时间通常很小)。
为什么?因为SQL Server将CTE的代码“嵌入”到查询本身中,然后一起优化所有代码。应删除未使用的列。
这可能是过于概括了。在某些情况下,SQL Server可能不会消除列的工作--例如聚合查询或某些子查询中的额外聚合函数。但是,一般来说,重要的是如何使用CTE,而不是在其中定义了多少列。
发布于 2016-05-21 15:44:48
你可以认为CTE是一个视图,但是它不会物化到Disk.So。一个视图在运行时扩展了它的定义,CTE也是如此。
https://stackoverflow.com/questions/37352431
复制相似问题