我有一个表,paymentdetails
有一个列paymentstatus
(有一个检查约束,将值限制为已付款或待处理)。此外,还有一个表格patientdetails
,其中包含有耐心ID、地址......列
我想创建一个索引,以加快为每个初始付款待处理的患者提取患者详细信息的执行速度。
我有一个表,paymentdetails
有一个列paymentstatus
(有一个检查约束,将值限制为已付款或待处理)。此外,还有一个表格patientdetails
,其中包含有耐心ID、地址......列
我想创建一个索引,以加快为每个初始付款待处理的患者提取患者详细信息的执行速度。
先写下你的查询。看看查询关心什么。
您需要对连接中涉及的任何键、where 子句中的键以及可能对结果集影响最大的表的主键(可能INCLUDE
用于使结果集中的其他列可用)的索引不打桌子)。
“过滤索引”(部分索引的 SQLServer 术语,出于某种未知原因)会很好,但 SQLServer 自 2008 年以来才拥有这些。
但前者是理论,而后者只是一个很好的知识,直到您开始使用 2008。实际检查如何执行查询是真实的。
还要考虑这样一个事实,即您的索引将加速其他 SELECT 以及 UPDATE 和 DELETE 的 WHERE 部分,但否则会稍微减慢 UPDATE、DELETE 和 INSERT。因此,您不想发疯地将索引绝对放在任何地方,但您确实希望特别热衷于那些最有可能在其他查询中使用的索引。