You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2017内存优化表带包含列哈希索引创建语法问题

问题原因与正确语法
  • 报语法错误的根本原因是SQL Server 2017 内存优化表的哈希索引根本不支持INCLUDE子句,你套用磁盘表索引的写法本身就不符合内存优化表的索引语法规则,SSMS标红是正常的。
  • 不要用磁盘表的索引逻辑套内存优化表:内存优化表的所有索引(哈希索引、内存优化非聚集索引)默认就隐式包含表内的全部列,天生就是覆盖索引,根本不需要手动指定包含列。查询时只要命中索引,就可以直接拿到所有需要的非键列数据,不存在磁盘表那种需要回表、需要手动加INCLUDE列优化覆盖的场景。
  • 你要重建这个索引,只需要删掉include (Col3, Col4)这一行即可,正确执行语句如下:
ALTER TABLE TableName  
    ADD INDEX IndexName  
    HASH (Col1, Col2)
    WITH (BUCKET_COUNT = 1048576);
  • 补充说明:哪怕是后续版本新增的内存优化表列存索引,也同样不支持INCLUDE语法,默认覆盖全表列。你之前留存的索引字段清单里列出来的Col3、Col4,应该是当时建索引时记录的查询常用覆盖列,不是索引语法里显式写的INCLUDE列,不需要在创建语句里额外声明。

内容的提问来源于stack exchange,提问作者GlennD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 14:24:20