我应该对用户定义的表类型有一个主键吗?

Jon*_*amy 5 database table-valued-parameters sql-server-2012

首先,我了解主键在SQL或与此相关的任何数据库中的表上的作用。

但是,当涉及到用户定义的表类型时,我发现自己无法理解为什么应该创建主键。根据我的经验,我发现它们并没有带来性能上的好处,但是我怀疑我的发现可能是由于我对它们的一般用法和有限的经验,而不是更有经验的观点。

例如,我通常将表值参数用于插入/更新过程,或传递用于创建选择查询的值数组。我发现它们没有任何性能优势,而且如果有任何表现,我会发现性能略有下降(但是我们最多只能说10毫秒,因此可以忽略不计)。

我应该透露,传递给它们的任何数据都已经非常仔细地清理/整理过,因此有可能因此而看不到收益,但是我无法轻易知道。

因此,问题又来了,我应该对用户定义的表类型使用主键,还是不那么重要?

抱歉,如果这是重复的。我进行了大量搜索,但随后可能使用了错误的关键字组合。

您的见解一如既往,将不胜感激。

use*_*579 -3

您可以在用户定义的表类型上创建主键,从而形成聚集索引。但不可能在用户定义的表类型上创建非聚集索引。

有关信息,请参阅以下页面

http://technet.microsoft.com/en-us/library/bb522526(v=sql.105).aspx