部署视图或使用函数进行查找

时间:2009-10-31 12:44:05

标签: function view performance

我有两张主表 Org & 项目,然后是 OrgItem 表。我必须为特定组织获取 ItemCodes

表格结构:

  • Org(Id,OrgCode,Name) - Org Master table
  • 项目(Id,ItemCode,名称) - 项目主表
  • OrgItem(ItemId,OrgId,ItemCode) - 一些Org特定ItemCodes

现在只有一些Item具有Org特定的ItemCode,所以默认情况下我从Item中获取ItemCode但是如果对于特定的Item + Org组合如果它的记录存在在OrgItem表中那么我必须获取OrgItem表中的ItemCode。

创建 View_OrgItem_Item 可能是一个解决方案,但它意味着一个视图,其中包含原始Item表大小的n倍(其中n = Orgs数)。

另一种选择是创建 GetItemCode(ItemId,OrgId),它执行查找并返回Item.ItemCode或ORgITem.ItemCode

所以,我的问题是 - 我应该选择'View_OrgItem_Item'还是只创建一个函数 GetItemCode(ItemId,OrgId)?

哪一项在性能方面最佳?还需要考虑其他因素。

**注意:所有Orgs都没有必要在OrgItem *

中有记录

1 个答案:

答案 0 :(得分:1)

几乎总是会出现视图比使用函数更好的情况。这是因为您经常希望以基于集合的方式获取项目代码。使用函数,此查找必须逐行进行。使用视图,您可以执行简单连接,并且查询优化器可以选择比逐行查找更优化的计划,这是函数本质上强制执行的。