SQL Server 2012中的索引
我的数据库中有一个表,其中hussandPersonid和WifePersonId是另一个名为Person的表的外键,开始/结束日期指婚姻开始和结束的时间 我有一个疑问:SQL Server 2012中的索引,sql,indexing,sql-server-2012,Sql,Indexing,Sql Server 2012,我的数据库中有一个表,其中hussandPersonid和WifePersonId是另一个名为Person的表的外键,开始/结束日期指婚姻开始和结束的时间 我有一个疑问: SELECT DISTINCT A.WifePersonId FROM Couple A INNER JOIN Couple B ON A.WifePersonId = B.WifePersonId AND A.HusbandPersonId <> B.HusbandPer
SELECT
DISTINCT A.WifePersonId
FROM
Couple A
INNER JOIN Couple B
ON A.WifePersonId = B.WifePersonId
AND A.HusbandPersonId <> B.HusbandPersonId
AND A.StartDate < B.EndDate
AND A.EndDate > B.StartDate;
返回同时与多人结婚的任何妻子
现在我想添加一个索引来提高这个查询的搜索速度
哪一个索引最好?在添加索引之前和之后,查询的执行计划是什么
这是作业中的一个要求,我搜索了太多,但没有找到任何有用的主题
有人能帮上忙吗?一般索引规则建议在加入条件中包括所有字段。这些字段的顺序可能会产生影响。同样,一般规则建议按每个字段唯一值的基数递增的顺序对字段进行排序 因此,您可以尝试:
CREATE INDEX Couple__multi ON Couple(StartDate, EndDate, WifePersonId, HusbandPersonId)
这假设不同开始/结束日期的数量小于唯一妻子/丈夫个人的数量
这些规则基本上是索引101类型的东西。大多数情况下,它们会让您获得可接受的性能水平。这在很大程度上取决于您的数据和应用程序是否足以满足您的目的
就我个人而言,我对SQL Performance Analyzer建议的索引并没有太多考虑,但我上一次认真研究它们是在SQL2005中。我相信从那以后情况有所改善
希望这能有所帮助。一般索引规则建议在联接条件中包含所有字段。这些字段的顺序可能会产生影响。同样,一般规则建议按每个字段唯一值的基数递增的顺序对字段进行排序 因此,您可以尝试:
CREATE INDEX Couple__multi ON Couple(StartDate, EndDate, WifePersonId, HusbandPersonId)
这假设不同开始/结束日期的数量小于唯一妻子/丈夫个人的数量
这些规则基本上是索引101类型的东西。大多数情况下,它们会让您获得可接受的性能水平。这在很大程度上取决于您的数据和应用程序是否足以满足您的目的
就我个人而言,我对SQL Performance Analyzer建议的索引并没有太多考虑,但我上一次认真研究它们是在SQL2005中。我相信从那以后情况有所改善
希望这有帮助。@ErikE你能帮我吗:我真的不知道作业的目的是什么。但是,如果您有一个填充了实际数据量的数据库,并运行查询,系统将建议索引。这些建议应该略知一二,但可以作为一个有用的起点。@ErikE你能帮忙吗:我真的不知道作业的目的是什么。但是,如果您有一个填充了实际数据量的数据库,并运行查询,系统将建议索引。这些建议应该略带保留,但可以作为一个有用的起点。