我有一个父表和一个子表。我应该在聚集索引表上添加一个非聚集索引,基于这个where子句和连接吗?
父表具有聚集索引作为主键和增量值(ParentID
)。子表还具有聚集索引作为具有增量值的主键(ChildID
)
主键Parent.parentID
与作为外键的child.parentID
有关。
我根据以下查询加入这两个表。
Select ....
Join on parent.parentID = child.parentID
where parent.personalNumber = 197608134356 <-- varchar
现在,parent.personalNumber
我应该
- 添加非聚集索引,因为它是在where子句中?
- 在外键
child.parentiD
上添加非聚集索引以加速连接?
这将意味着我把非聚簇索引放在聚簇索引表上。
随着时间的推移,我预计父母和孩子都会有很多行。将会有插入和选择。没有更新或删除
感谢 /s的
我的建议是为'personalNumber'添加一个索引。那么'child.parentID'取决于优化器使用哪种类型的连接。通常,在'child.parentID'上添加索引是个好主意。 –
我肯定会在'child.ParentID'上添加非聚集索引来帮助JOIN。是否在父母的NC指数。PersonalNumber'的帮助取决于:(a)“PersonalNumber”的选择性(具有给定的值,原始行将被检索多少%)?(b)在“SELECT”子句中具有什么样的列(如果在任何地方使用'SELECT *',那么NC索引的用处就会大大减少) –