Sql 创建包含频繁更改的字段的索引是个坏主意吗?
我需要防止在大表上进行表扫描,其中记录搜索基于三个字段,其中一个字段可能会更新。 搜索查询如下所示:Sql 创建包含频繁更改的字段的索引是个坏主意吗?,sql,sql-server,Sql,Sql Server,我需要防止在大表上进行表扫描,其中记录搜索基于三个字段,其中一个字段可能会更新。 搜索查询如下所示: select blabla from ttg_transaction where uti = ? and txn_type = ? and state = ? 想到的索引(不是唯一的,不是聚集的)是上面的三个字段。但尽管前两个是常数,但“状态”在记录的生命周期中确实会发生变化 这是从索引中排除“状态”的一个好理由吗?这是一个坏主意 如果存储速度慢(旋转的金属磁盘) 如果数据类型较大(TEXT
select blabla from ttg_transaction where uti = ? and txn_type = ? and state = ?
想到的索引(不是唯一的,不是聚集的)是上面的三个字段。但尽管前两个是常数,但“状态”在记录的生命周期中确实会发生变化
这是从索引中排除“状态”的一个好理由吗?这是一个坏主意
- 如果存储速度慢(旋转的金属磁盘)
- 如果数据类型较大(TEXT/NTEXT、VARBINARY、XML等)
- 高频更新
- 配置insert/update语句
- 创建索引
- 创建索引时配置insert/update语句
- 比较结果
设置统计IO ON
和/或设置统计时间ON
要处理索引碎片,您可以指定一个对您的案例有意义的索引
如果状态为随机文本字段,这也可能会干扰您的统计数据,但您没有指定。谢谢您的回答。“state”的数据类型是int,所以不是很大,频率也不是很高。我相信硬件是好的,但我得确认一下。因此,道路是开放的,可以使用所有三个字段创建索引,并按照您的建议对其进行配置。填充因子对于该索引和其他索引也是很好的了解-这是一个商业应用,需要像闪电一样快。再次感谢