SQL Server Forecast表聚集索引设计咨询:方案合理性与宽键判断
索引方案合理性分析
- 你拟创建的DateCalculated desc、CalendarDay desc、LocationId desc复合聚集索引顺序不合理,完全匹配不上你的查询逻辑。你的核心查询是先过滤指定
LocationId和CalendarDay,再按DateCalculated倒序取最新记录,索引列的顺序得优先满足过滤条件,再适配排序需求。 - 正确的索引顺序应该是LocationId desc, CalendarDay desc, DateCalculated desc(升序也可,只要过滤列在前)。这样数据库能直接通过索引定位到符合
LocationId和CalendarDay的所有记录,再利用索引自带的DateCalculated倒序排列直接取第一条,不需要额外排序,性能最优。
宽键判断
按照Microsoft的定义,宽键指聚集索引键的总字节数过大(官方硬限制是900字节,超过会报错;即使没到,字节数过多也会拖累性能)。你这个复合键的三个列:
LocationId一般是整数类型(INT占4字节,BIGINT占8字节)CalendarDay和DateCalculated如果是DATE类型各占3字节,DATETIME类型各占8字节
就算按最大的字节数计算,总大小也才24字节,远低于900字节的阈值,完全不属于宽键范畴。
内容的提问来源于stack exchange,提问作者Pat
相关产品推荐
相关产品推荐

