在我的示例中,我有两个表,它们通过第一个(主)表的主键相互关联。第二个表可以有多行与第一个(主)表相关。在我的真实世界的例子中,我有成千上万的行被数千个客户端同时选择,更新,插入和删除。由于并发更新和选择,我遇到的问题是锁定。
将与主表关联的非唯一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 :(得分:1)
理想情况下,第二个表将具有唯一的主键,该主键将作为聚簇索引服务(这可以是列的组合)。如果该值不是唯一的,我会使用非聚集索引,这应该有所帮助。