我有一个观察最近四年的观点。它有18个子查询非常复杂。当年份被硬编码到声明中时,它会快速运行,但我宁愿将其视为基于年份(学年,实际上)的变化。
我写了一个函数,它抓住了正确的年份(不是当前年份)并取代了硬编码年份,它从<30秒变为超过我等待的时间。我也尝试过选择正确的年份,但仍未完成。然后,我尝试制作包含当年表格的CTE,但仍未完成。
我觉得,如果在视图中允许变量,我可以将年份存储在变量中并将硬编码日期更改为(或@var - 1等等)并且不会影响性能。有没有办法在没有大量执行时间增加的情况下使用视图?或者我需要将其切换到存储过程吗?
我还没有完成大量的SQL,所以我仍然想知道我是否在这里遗漏了一些东西。我不知道这会导致如此巨大的性能变化。
感谢。