【问题标题】:View vs TableValued Function vs SubQuery查看 vs 表值函数 vs 子查询
【发布时间】:2014-08-22 10:14:05
【问题描述】:

我有一个需要的场景

  1. 加入 3 个表 以获取 一个字段 的值
  2. 第二个字段加入 4 个表格
  3. 用于第三个字段连接3 个表

以上所有连接都是内部的 如果数据存在,我的字段的值为“Y”,否则为“N”

to achieve this which method gives best performance
  1. 创建一个表值函数,我可以使用它加入并检查是否为空,然后为“N”,否则为“Y”
  2. 创建一个视图而不是表值函数并与之连接
  3. 编写子查询并结合子查询使用。

这会更快...这将在大数据上执行。因此性能是主要因素。

-谢谢

【问题讨论】:

    标签: sql-server join view subquery table-valued-parameters


    【解决方案1】:

    函数是邪恶的。

    另一方面,视图和子查询之间的差异几乎不会引起注意 - 当然,只要查询完全相同。不过,视图可能不太灵活。

    【讨论】:

    • ‘功能是邪恶的’ 过于笼统。内嵌 TVF 对优化器非常友好,非常好用。
    • @AndriyM,内联是唯一的例外。但是关于性能,就像这个问题的主题一样,我怀疑它们会击败视图或子查询。它们有其用途,但在性能方面,它们是最糟糕的选择。
    猜你喜欢
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多