我有一个数据库,我在其中使用嵌入式TVF(表值函数)而不是视图。例如,我可能在TVF [fnCarBrands]内将两个称为[汽车模型]和[汽车制造商]的表连接在一起。
然后,其他TVF会调用这些TVF进行进一步的处理和报告。因此,我可以使用函数[fnCarBrands]并连接到表[购买年份]以形成函数[fnCarBrandHistory]。以此类推,用于多层TVF。
我可以使用视图获得相同的功能,因为我的内联TVF实际上只是表和其他TVF的连接。
用这种方式编写的嵌入式TVF的性能与视图相比如何?
您很可能会看到相同的执行计划和相同的性能。
—
AK 2012年
这就是我的想法,但是我被告知TVF的行为就像括号中的代数一样-它迫使DB引擎在优化之前首先完成该查询。有人告诉我,使用视图可以使优化器将整个查询作为一个单元进行优化。
—
FistOfFury 2012年
@ MarkStorey-Smith是的,原因就是您所说的代码猴子与数据猴子方法。
—
FistOfFury 2012年