SQL 非唯一列上的服务器聚集索引

SQL Server clustered index on non-unique columns

在我的示例中,我有两个 table,它们通过第一个(主)table 的主键相互关联。第二个 table 可以有多行与第一个(主)table 相关。在我的真实示例中,我有数以万计的行被数以千计的客户端同时选择、更新、插入和删除。我遇到的问题是由于并发更新和选择而锁定。

将与主 table 相关的非唯一 ID 列设为聚簇索引对我的情况有帮助吗?

Table结构:

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

理想情况下,第二个 table 将有一个唯一的主键,作为聚集索引(这可以是列的组合)。如果该值不是唯一的,我会使用应该有帮助的非聚集索引。