首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

MSSQL SERVER 覆盖目录和复合索引的区别

2013-01-06 
MSSQL SERVER覆盖索引和复合索引的区别MSSQL SERVER覆盖索引和复合索引的区别 ,如题,求大神指点执行计划里

MSSQL SERVER 覆盖索引和复合索引的区别
MSSQL SERVER  覆盖索引和复合索引的区别 ,如题,求大神指点

执行计划里面,出现的都是 INDEX SEEK。有点迷茫
[解决办法]
联合索引和覆盖索引有很大的区别:
覆盖索引是查询的列可以直接通过索引提取,比如只查询主键的列!或者查询联合索引的所有列或者左边开始的部分列(注意有顺序的)
而联合索引并不一定只从索引中能获取到所有的数据,这个取决于你所查询的列。比如select * from table where ××××××;的方式就不太可能是覆盖索引。因此如果你查询的列能用到联合索引,且你查询的列都能通过联合索引获取,比如你只查询联合索引所在的列或者左边开始的部分列,这就相当于覆盖索引了。通常为了让查询能用到覆盖索引,就将要查询的多列数据设置成联合索引
[解决办法]


1、这本书还没有中文译本,同时也证明,如果你不懂英文,你最少落后别人4年以上。还是学学吧。
2、看书名就知道是英文的拉。
3、2005技术内幕其中一本好像是那个什么性能的那本,听说译得非常烂,连书名都错了。所以还是英文比较准确。
4、我再简单说说覆盖索引,当你要查询的列,无论在where或者select中,如果某些列没有索引,这时2008会考虑选择性、数据分布等因素,提出建议让你创建一个覆盖索引,把涉及的列放到include里面。
[解决办法]

1、覆盖索引的include 的列被更新时,不需要去重新维护索引。对于大表来说更新带来的索引维护成本很高
2、覆盖索引included columns 仅仅存储在索引的页级别,更高层次树中只存储键列,所以覆盖索引的存储空间更小,以便更快的搜索


[解决办法]
俺是从一篇文章中理解覆盖索引的。。本身比较菜,不敢多少啥,把文章分享给你http://rdc.taobao.com/blog/cs/?p=406

热点排行
Bad Request.