使用动态数据集连接表

时间:2012-02-06 10:58:45

标签: tsql function views common-table-expression

在我的查询中,我想加入一个动态集(基于参数检索)与现有表的数据。我正在研究完成这个场景的最佳选择,我最终缩小到3个选项。

查看,CTE,功能,CTE +功能

查询看起来像

select id from table
where id not in (select id from dynamic_set (param1, param2) )
  • 有了视图,我必须提取所有数据而不能过滤它。
  • 必须为表中的每一行运行函数,因此它可能会影响查询性能。
  • CTE和函数的组合与使用函数本身几乎相同,只有行可以被​​过滤和优化,以获得更好的性能。
  • CTE与临时表相似,所以我的问题是大量的数据影响性能

我想听听您对最佳解决方案的看法

感谢您的参与

1 个答案:

答案 0 :(得分:2)

视图不会提取所有数据,它更像是可用于其他查询的命名查询。过滤视图时,只需将该过滤器添加到该视图中定义的查询中。

CTE查询更像是一个本地视图,只能在定义它的地方(after; with)引用它。这也没有实现,我不知道如何实现CTE查询,就像我们可以使用视图(通过添加聚集索引)。

功能是最糟糕的选择,你说的原因。如果仅在此处使用“内联”查询,我会选择CTE方式。