2017-04-04 68 views
0

在我的示例中,我有两个通过第一个(主)表的主键相互关联的表。第二个表可以有多行与第一个(主)表相关联。在我的真实世界的例子中,我有成千上万的行同时被数千个客户选中,更新,插入和删除。我遇到的问题是锁定,因为并发更新和选择。非唯一列上的SQL Server聚簇索引

将非唯一ID列与主表相关联的聚集索引帮助我的情况呢?

表结构:

wks_master: wks_master_id [primary key], other_columns.... 
wks_std_apps: wks_std_apps_id [primary key], wks_master_id, other_columns.... 

查询通常如下所示:

select * 
from wks_std_apps 
where wks_master_id = @wks_master_id 

update wks_std_apps 
set blah... 
where wks_master_id = @wks_master_id 
+0

它应该 - 如果列索引,选择和更新都能够更快地找到给定“wks_master_id”的行。不过,它不需要群集。 – user1935361

+0

有没有当前的聚集索引?如果是这样,它是唯一的吗? –

回答

1

理想地,第二表将具有唯一的主密钥将服务器作为群集索引(这可以是一个组合列)。如果该值不唯一,我会使用非聚集索引,这应该有所帮助。

+0

添加非聚集索引立即解决了问题。插入/更新/删除有点惩罚,但选择是这个数据库绝大多数交易。 –

相关问题