从不使用时主键是否有用

时间:2016-06-26 08:40:41

标签: sql-server

问题是关于table2.id

表1

id     -- Uniqueidentifier primary key   

表2

id        -- Uniqueidentifier primary key
id_table1 -- Duplicate foreign key
value     -- varchar or other

可能的查询是:

select table1.id, table2.value 
from table1
inner join table2 ON table2.id_table1 = table1.id
where table1.id = 'foo'

select value
from table2
where table2.id_table1 = 'foo'

无论是否存在table2.id,性能是否会发生变化。即使查询没有使用它?

1 个答案:

答案 0 :(得分:0)

我认为答案是肯定的。拥有永远不会使用的列和索引会对性能产生负面影响,但可能并不多,具体取决于您的具体情况。

我认为你真正需要的是更好地理解主键和索引。特别是我建议你研究关于代理键的辩论。你会发现很多关于这个主题的信息。