为什么SQL Server的查询估计值与列存储索引一起变差?

问题描述

我有一个包含55列和400万行的表以及以下查询

SELECT * 
FROM [SCHEMA].[TABLE] 
WHERE [COLUMN_5] = 'I write garbage t-sql and call myself a developer'

有了[COLUMN_5]上的非聚集行存储索引,我得到了不错的估计... 5个估计结果中有59个结果

但是使用非聚集列存储索引...在估计的4142820 (表中的所有行)中,有59个结果

列存储状态:

表“ TABLE”。扫描计数2,逻辑读248,物理读0,预读161,lob逻辑读4432,lob物理读5,lob预读8198。
表“ TABLE”。细分读为5,细分跳过了0。

行商店统计信息:

表“ TABLE”。扫描计数1,逻辑读240,物理读0,预读0,lob逻辑读0,lob物理读0,lob预读0。

有人告诉我列存储索引的性能会更好,因为“批处理模式比行模式要好,”但是这些统计数字却暗示了……

所以,我的问题是:

  1. 为什么sql认为[COLUMN_5]中的 ALL 值等于我的搜索字符串?
  2. 批处理模式比行模式好吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)