我正在考虑提高某些 SQL 的性能,目前 CTE 在脚本中被多次使用和引用。使用表变量我会得到改进吗? (不能使用临时表,因为代码位于函数内)。
您确实必须进行性能测试 - 没有是/否的答案。根据上面 Andy Living 的帖子链接,CTE 只是查询或子查询的简写。
如果您在同一个函数中调用它两次或多次,那么如果您填充一个表变量然后连接到该变量或从中选择,您可能会获得更好的性能。但是,由于表变量在某处占用空间,并且没有索引/统计信息(表变量上任何声明的主键除外),因此无法说哪个会更快。
他们都有成本和节省,哪一个是最好的方法取决于他们提取的数据以及他们如何处理这些数据。我遇到过你的情况,并且在测试了各种条件下的速度之后 - 有些函数使用 CTE,而其他函数使用表变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)