sql-server – SQL Server STATISTICS
所以对于这个项目,我们有一堆定期执行的查询(每分钟左右),我用“数据库引擎中的分析查询”来检查它们.
他们很简单: 处理后有一个索引,每个查询应该在具有1MM记录的表上返回< 1000行. 分析器建议在此创建一些统计信息.所以我的问题是:这些统计数据是什么?他们真的有助于表现吗?他们对上面的桌子有多昂贵? 请记住,绝对不会将自己称为SQL Server经验丰富的用户…这是第一次使用此分析器. 解决方法统计信息是SQL Server用来确定如何获取数据的可行性.比方说,你有一个表只在主键上有一个聚簇索引.当您执行SELECT * FROM tablename WHERE col1 = value时,SQL Server只有一个选项,用于扫描表中的每一行以找到匹配的行. 现在我们在col1上添加一个索引,所以你假设SQL Server将使用索引来找到匹配的行,但并不总是如此.假设表有20万行,col1只有2个值:1和0.当SQL Server使用索引查找数据时,索引包含指向聚簇索引位置的指针.鉴于索引列中只有两个值,因此SQL Server将决定使扫描表更为有意义,因为使用索引将会更加有效. 现在我们再向表中添加80万行数据,但是这次col1中的值是很大的变化的.现在这是一个有用的索引,因为SQL Server可以有效地使用索引来限制从表中拉出所需的内容. SQL Server会使用索引吗? 这取决于.统计数据是什么呢?在某些时间点,使用AUTO UPDATE STATISTICS设置,服务器将更新索引的统计信息,并知道它是一个非常好的有效索引.然而,在此之前,它将忽略该指数是无关紧要的. 这是统计学的一个用途.但还有另外一种用途,与索引无关. SQL Server保留表中所有列的基本统计信息.如果有足够的不同数据使其值得,SQL Server实际上将在列上创建一个临时索引并使用它进行过滤.虽然这比使用现有索引需要更多的时间,但它比全表扫描花费更少的时间. 有时,您将获得建议,以便为有用的列创建特定统计信息.这些不是索引,而是跟踪列中数据的统计抽样,因此SQL Server可以确定创建临时索引以返回数据是否有意义. HTH (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- SQL Server 将varchar类型转换为int型再进行排序
- 在Select中组合两个表(SQL Server 2008)
- 索引是否计入SQL Server Express的10gb数据库大小
- 解决 sqlserver 2008 远程过程调用失败 0x800706
- sql-server – “无法对数据库”myDb“执行差异备
- SqlConnection类--------与SqlServer建立连接
- Sqlserver计算本年度工作日
- sql – DELETE和INSERT之后的Redshift(AWS)上的V
- Sqlserver2005附加数据库为只读的解决方法
- SQLSERVER触发器内INSERT,UPDATE,DELETE三种状态