All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
PHP日常开发小技巧_[PHP教程]
asp.net,ajax,1.0,hello,world程序_.net资料_编程技术
PHP实例:用PHP将mysql数据表转换为excel文件格式_[PHP教程]
经典:10个重要的PHP网络信息函数说明_php资料_编程技术
简单实用的DataGrid自定义分页源程序_[Asp.Net教程]
C#网络应用编程基础练习题与答案(四)_[Asp.Net教程]
对于本专栏,我假设您已经对,Web,部件的基本知识有所了解,例如,如何使用,WebPartMana_[Asp.Net教程]
delphi弹出菜单组件(TPopMenu)
Asp.net,备份和还原SQL,Server及压缩Access数据库_.net资料_编程技术
php生成静态页面的简单实例_[PHP教程]
Reading number is top 10 pictures
性感丰满身材火爆de美女1
Athena chu perspective cheongsam shine with New York
去瑜伽会所面试的经过
The real super beauty9
Plump, too plump!1
Absolutely shocked. National geographic 50 animal photographys7
西班牙山村小景1
中国处女图鉴2
India's national beauty of the college students
Desktop Wallpapers1
Download software ranking
都市狐狸姑娘传
Unix video tutorial12
Call Of Duty5
XML+Web+Service开发教程
Tram sex maniac 2 (H) rar bag1
SP4 for SQL2000
Unix video tutorial4
Boxer's Top ten classic battle1
致我们终将逝去的青春
圣殿祭司的ASP.NET.2.0.开发详解-使用C#
归海一刀 published in(发表于) 2014/2/1 0:20:37 Edit(编辑)
如何识别真实和自动创建的索引?_[SQL,Server教程]

如何识别真实和自动创建的索引?_[SQL,Server教程]

如何识别真实和自动创建的索引?_[SQL Server教程]


本技巧摘自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个统计。很明显,这些表的索引策略很差劲。对表及自动创建的与之相关联的统计的快速记数可以帮助您确定哪些表需要索引。


—Microsoft SQL Server开发团队







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.