此处仅需注意,出于优化的原因,最好有3个单独的SELECTS。如果只有一个SELECT,则生成的计划将必须投影所有列col1,col2,col3,col7,col8等,尽管取决于运行时@var的值,仅需要其中一些。这可能会导致计划执行不必要的聚集索引查找,因为非聚集索引不会覆盖SELECT投影的所有列。
另一方面,3个独立的SELECTS,每个仅投影所需列的选择可能会受益于非聚集索引,这些索引在每种情况下仅覆盖您的投影列。
当然,这取决于您的数据模型的实际模式和确切的查询,但这只是一个提示,因此您不会将过程性编程的命令式思维框架带入SQL的声明式世界。



