`

SQL Server如何识别自动创建的索引

阅读更多

SQL Server如何识别自动创建的索引

http://www.weaseek.com  2007-12-03 15:30:00  来源:搜讯网社区

最近发现sysindexes索引表中的很多条目并不是我自己创建的。听同事说它们并不是真正的索引,而是SQL Server查询优化器自动创建的统计。怎样才能识别哪些是真正的索引,哪些是SQL Server自动创建的统计呢?

    问:最近我发现sysindexes索引表中的很多条目并不是我自己创建的。听同事说它们并不是真正的索引,而是SQL Server查询优化器自动创建的统计。怎样才能识别哪些是真正的索引,哪些是SQL Server自动创建的统计呢?  

答:按照默认设置,如果表中的某列没有索引,则SQL Server会自动为该列创建统计。然后,查询优化器评估该列中数据分布范围的统计信息,以选择一个更为有效的查询处理方案。分辨自动创建的统计很简单,在SQL Server 7.0和SQL Server 2000中,自动创建的统计的前缀为_WA_Sys。  

您还可以使用INDEXPROPERTY()函数的IsAutoStatistics属性来区分一个索引是真正的还是自动创建的统计,让SQL Server优化器选择需要创建的统计。您还可以为您管理的数据库启用“自动创建统计表”选项。  

很多人忽略了下面的明显的结论。自动创建统计的存在意味着某个真正的索引可能会从中受益。请考虑下列代码的输出:

 

  USE tempdb
  GO
  IF OBJECTPROPERTY(OBJECT_ID('dbo.orders'), 'IsUserTable')=1
  DROP TABLE dbo.orders
  GO
  SELECT * INTO tempdb..orders FROM northwind..orders
  GO
  SELECT * FROM tempdb..orders WHERE orderid = 10248
  GO
  SELECT * FROM tempdb..sysindexes WHERE id = object_id('orders')
  AND name LIKE
  '_wa_sys%'
  GO
  

该代码在tempdb中复制Northwind Orders表,选择一行,然后检查SQL Server是否添加了一个统计。很显然,该表没有OrderId列的索引,所以SQL Server自动创建了名为_WA_Sys_OrderID_58D1301D 的统计。OrderId列统计表的存在表明Northwind Orders表将得益于附加的索引。

以下查询显示了为数据库中每个用户表自动创建的统计的数量,该数据库至少有一个自动创建的统计。

 

  SELECT
  object_name(id) TableName
  ,count(*) NumberOfAutoStats
  FROM
  sysindexes
  WHERE
  OBJECTPROPERTY(id, N'IsUserTable') = 1
  AND INDEXPROPERTY ( id , name , 'IsAutoStatistics' ) = 1
  GROUP BY
  object_name(id)
  ORDER BY
  count(*) DESC
   

并不是所有的统计都可被真正的索引所替代。在某些情况下,SQL Server会为一个表自动创建超过50个统计。很明显,这些表的索引策略很差劲。对表及自动创建的与之相关联的统计的快速记数可以帮助您确定哪些表需要索引。

分享到:
评论

相关推荐

    SQL Server数据库实验指导书 实验教程 数据库实验05 视图的创建与使用.pdf

    2.利用SQL Server配置管理器启动、停止SQL Server服务(包括默认实例和命名实例),配置SQL Server服务为自动启动。 3.利用SQL Server配置管理器配置进行SQL Server 2005网络配置,启用默认实例和命名实例的TCP/IP...

    SQL Server 2008宝典

    第2部分为SQLServer 2008的准备篇,介绍了SQL Server 2008的功能、特性、各版本的比较、安装方法、SQL Server 2008的服务、客户端的工具等;第3部分为SQL Server 2008的基本操作篇,介绍如何管理与配置SQL Server ...

    sqlserver2005自动创建数据表和自动添加某个字段索引

    C#编程程序的时候,让程序自动创建数据表,然后给数据表添加索引,这个方法是在百度百科找到,我自已只是简单的修改了一下

    SQL Server 2008管理员必备指南(超高清PDF)Part3

    7.5.1 配置SQL Server自动管理文件大小 7.5.2 手动扩展数据库和日志 7.5.3 手动压缩和收缩数据库 7.6 操作数据库 7.6.1 重命名数据库 7.6.2 清除和删除数据库 7.6.3 附加和分离数据库 7.7 提示和技巧 7.7.1 复制和...

    SQL Server 2008管理员必备指南(超高清PDF)Part1

    7.5.1 配置SQL Server自动管理文件大小 7.5.2 手动扩展数据库和日志 7.5.3 手动压缩和收缩数据库 7.6 操作数据库 7.6.1 重命名数据库 7.6.2 清除和删除数据库 7.6.3 附加和分离数据库 7.7 提示和技巧 7.7.1 复制和...

    SQL Server 2008管理员必备指南(超高清PDF)Part2

    7.5.1 配置SQL Server自动管理文件大小 7.5.2 手动扩展数据库和日志 7.5.3 手动压缩和收缩数据库 7.6 操作数据库 7.6.1 重命名数据库 7.6.2 清除和删除数据库 7.6.3 附加和分离数据库 7.7 提示和技巧 7.7.1 复制和...

    Microsoft SQL Server 2005 Express Edition SP3

    .NET Framework 2.0 由 Microsoft Visual Studio 2005 和所有版本的 SQL Server 2005 自动安装。 [顶部] 2.2 SQL Server Express SQL Server Express 可从此 Microsoft 网站下载获得。 注意: 下载和提取产品...

    SQL Server 2008宝典.(电子工业.刘智勇.刘径周).part2

    第22章 SQLServer的自动化管理565 第23章 SQLServer的性能工具584 第24章 SQLServer邮件590 第25章 数据导入与导出601 第26章 AnalysisServices607 第27章 ReportingServices624 第28章 SQLServer与XML634 ...

    SQL Server 2008宝典.(电子工业.刘智勇.刘径周).part1

    第22章 SQLServer的自动化管理565 第23章 SQLServer的性能工具584 第24章 SQLServer邮件590 第25章 数据导入与导出601 第26章 AnalysisServices607 第27章 ReportingServices624 第28章 SQLServer与XML634 ...

    SQL Server数据库查询速度慢原因及优化方法

    【赛迪网-IT技术报道】SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:  1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)  2、I/O吞吐量小,形成了瓶颈效应。  3、没有...

    实验四 存储过程、触发器与索引

    (5)将100万行网络连接监控数据Netflow导入数据库,创建多个索引,观察创建索引对数据库文件大小的影响;并设计不同的查询语句来观察索引对查询效率的影响;可以尝试将100万行记录扩展为1000万行,然后再做索引和...

    SQL Server 2008宝典.(电子工业.刘智勇.刘径周).part4

    第22章 SQLServer的自动化管理565 第23章 SQLServer的性能工具584 第24章 SQLServer邮件590 第25章 数据导入与导出601 第26章 AnalysisServices607 第27章 ReportingServices624 第28章 SQLServer与XML634 ...

    SQLServer2008查询性能优化 2/2

    书名: SQLServer2008查询性能优化 作者: 弗里奇(Grant Fritchey) 出版社: 人民邮电出版社 出版日期: 2010年8月1日 ISBN: 9787115230294 编辑推荐 《SQL Server 2008查询性能优化》为你提供了处理查询性能所...

    Devart dbForge Studio for SQL Server Enterprise 破解版

    dbForgeStudioforSQLServer是一个强大的IDE,用于SQLServer管理,管理,开发,数据报告和分析。该工具将帮助SQL开发人员执行复杂的数据库更改,流行的源代码控制系统中的版本控制数据库更改,以及加速常规任务。您不...

    SQLServer2008查询性能优化 1/2

    书名: SQLServer2008查询性能优化 作者: 弗里奇(Grant Fritchey) 出版社: 人民邮电出版社 出版日期: 2010年8月1日 ISBN: 9787115230294 编辑推荐 《SQL Server 2008查询性能优化》为你提供了处理查询性能所...

    SQL.Server.2008管理员必备指南.part2.rar(2/4)

     7.5.1 配置SQL Server自动管理文件大小 186  7.5.2 手动扩展数据库和日志 187  7.5.3 手动压缩和收缩数据库 187  7.6 操作数据库 191  7.6.1 重命名数据库 191  7.6.2 清除和删除数据库 192  7.6.3 附加和...

    SQL Server自动更新和自动创建统计信息选项

     ● 如果数据库中AUTO_CREATE_STATISTICS被设置为ON,SQLServer将会自动对查询中用到的,且没有索引的列自动创建统计信息。  AUTO_CREATE_STATISTICS选项:  当把该选项设为ON时,查询优化器会对在

    SQL.Server.2008管理员必备指南.part1.rar(1/4)

     7.5.1 配置SQL Server自动管理文件大小 186  7.5.2 手动扩展数据库和日志 187  7.5.3 手动压缩和收缩数据库 187  7.6 操作数据库 191  7.6.1 重命名数据库 191  7.6.2 清除和删除数据库 192  7.6.3 附加和...

    SQLServer安全及性能优化

    SQLServer安全及性能优化 修补漏洞 安装程序补丁修补漏洞 随时关注微软官方网站补丁升级 关闭不必要的端口 关闭联必要的服务 数据库引擎 SQL Server Analysis Services SQL Server Reporting Services SQL ...

Global site tag (gtag.js) - Google Analytics