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

极品老土豆 2012-12-26 10:19:45
MSSQL SERVER 覆盖索引和复合索引的区别 ,如题,求大神指点

执行计划里面,出现的都是 INDEX SEEK。有点迷茫
...全文
487 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhh871030 2012-12-26
  • 打赏
  • 举报
回复
俺是从一篇文章中理解覆盖索引的。。本身比较菜,不敢多少啥,把文章分享给你http://rdc.taobao.com/blog/cs/?p=406
知识青年 2012-12-26
  • 打赏
  • 举报
回复
1、覆盖索引的include 的列被更新时,不需要去重新维护索引。对于大表来说更新带来的索引维护成本很高 2、覆盖索引included columns 仅仅存储在索引的页级别,更高层次树中只存储键列,所以覆盖索引的存储空间更小,以便更快的搜索
极品老土豆 2012-12-26
  • 打赏
  • 举报
回复
我认为,覆盖索引是,联合索引的补充。
引用 8 楼 OrchidCat 的回复:
引用 楼主 DBAXMMDS 的回复: MSSQL SERVER 覆盖索引和复合索引的区别 ,如题,求大神指点 执行计划里面,出现的都是 INDEX SEEK。有点迷茫 当select需检出的字段超过索引覆盖范围时,将大多数会造成RID Lookup操作(这个是要避免的)。 覆盖索引,使用空间换效率的方式,将所有字段进行索引处理。这样无论是where筛选或者是select 多字段……
發糞塗牆 2012-12-26
  • 打赏
  • 举报
回复
1、这本书还没有中文译本,同时也证明,如果你不懂英文,你最少落后别人4年以上。还是学学吧。 2、看书名就知道是英文的拉。 3、2005技术内幕其中一本好像是那个什么性能的那本,听说译得非常烂,连书名都错了。所以还是英文比较准确。 4、我再简单说说覆盖索引,当你要查询的列,无论在where或者select中,如果某些列没有索引,这时2008会考虑选择性、数据分布等因素,提出建议让你创建一个覆盖索引,把涉及的列放到include里面。
极品老土豆 2012-12-26
  • 打赏
  • 举报
回复
FUCK....居然是英文版的,还好,我懂点。。。 但是也够费劲的。。。
引用 16 楼 DBA_Huangzj 的回复:
对于索引的讲解目前好像都说技术内幕最好,而这本是2008的技术内幕里面的一本。很权威。
發糞塗牆 2012-12-26
  • 打赏
  • 举报
回复
对于索引的讲解目前好像都说技术内幕最好,而这本是2008的技术内幕里面的一本。很权威。
极品老土豆 2012-12-26
  • 打赏
  • 举报
回复
谢谢了,版版~
引用 13 楼 DBA_Huangzj 的回复:
给个邮箱来,我发过去,不过可能有我的一些标注。因为我觉得我也没透彻理解,所以我不敢乱说
极品老土豆 2012-12-26
  • 打赏
  • 举报
回复
812478541@qq.com
引用 13 楼 DBA_Huangzj 的回复:
给个邮箱来,我发过去,不过可能有我的一些标注。因为我觉得我也没透彻理解,所以我不敢乱说
發糞塗牆 2012-12-26
  • 打赏
  • 举报
回复
给个邮箱来,我发过去,不过可能有我的一些标注。因为我觉得我也没透彻理解,所以我不敢乱说
极品老土豆 2012-12-26
  • 打赏
  • 举报
回复
你就不能给我简单说下,那需要买书的。。这一时三刻怎么买。。。。
引用 11 楼 DBA_Huangzj 的回复:
看另外一本宝典:《Microsoft SQL Server 2008 Internals》。看来你的宝典也不够宝嘛
發糞塗牆 2012-12-26
  • 打赏
  • 举报
回复
看另外一本宝典:《Microsoft SQL Server 2008 Internals》。看来你的宝典也不够宝嘛
极品老土豆 2012-12-26
  • 打赏
  • 举报
回复

没有,有的话,就不用跑上来问了。。。
引用 8 楼 OrchidCat 的回复:
引用 楼主 DBAXMMDS 的回复:
MSSQL SERVER 覆盖索引和复合索引的区别 ,如题,求大神指点

执行计划里面,出现的都是 INDEX SEEK。有点迷茫

当select需检出的字段超过索引覆盖范围时,将大多数会造成RID Lookup操作(这个是要避免的)。
覆盖索引,使用空间换效率的方式,将所有字段进行索引处理。这样无论是where筛选或者是select 多字段……


引用 9 楼 DBA_Huangzj 的回复:
引用 7 楼 DBAXMMDS 的回复:
版主啊,你就别调戏我行么?给我说说怎么走的B树。。。 拜托了。。。。

引用 5 楼 DBA_Huangzj 的回复:
从定义上:
覆盖索引:后面有include,并且可以避免索引宽度的限制,一般用于处理丢失索引。

复合索引:一个索引包含1个以上的列。没调戏你啊,我只是觉得一大片文字贴出来没啥意义而已。走B树你那宝典没有吗?


引用 9 楼 DBA_Huangzj 的回复:
引用 7 楼 DBAXMMDS 的回复:
版主啊,你就别调戏我行么?给我说说怎么走的B树。。。 拜托了。。。。

引用 5 楼 DBA_Huangzj 的回复:
从定义上:
覆盖索引:后面有include,并且可以避免索引宽度的限制,一般用于处理丢失索引。

复合索引:一个索引包含1个以上的列。没调戏你啊,我只是觉得一大片文字贴出来没啥意义而已。走B树你那宝典没有吗?
發糞塗牆 2012-12-26
  • 打赏
  • 举报
回复
引用 7 楼 DBAXMMDS 的回复:
版主啊,你就别调戏我行么?给我说说怎么走的B树。。。 拜托了。。。。 引用 5 楼 DBA_Huangzj 的回复: 从定义上: 覆盖索引:后面有include,并且可以避免索引宽度的限制,一般用于处理丢失索引。 复合索引:一个索引包含1个以上的列。
没调戏你啊,我只是觉得一大片文字贴出来没啥意义而已。走B树你那宝典没有吗?
Mr_Nice 2012-12-26
  • 打赏
  • 举报
回复
引用 楼主 DBAXMMDS 的回复:
MSSQL SERVER 覆盖索引和复合索引的区别 ,如题,求大神指点 执行计划里面,出现的都是 INDEX SEEK。有点迷茫
当select需检出的字段超过索引覆盖范围时,将大多数会造成RID Lookup操作(这个是要避免的)。 覆盖索引,使用空间换效率的方式,将所有字段进行索引处理。这样无论是where筛选或者是select 多字段处理,都会使用seek处理(当然表中行数,查询优化器认定seek比scan来的成本更低的情况下。 复合索引,个人认为就是轻量化的覆盖索引(节省空间考虑)。如果select where 设计字段均在复合索引范围内,那么完全覆盖也就没有必要了。
极品老土豆 2012-12-26
  • 打赏
  • 举报
回复
版主啊,你就别调戏我行么?给我说说怎么走的B树。。。 拜托了。。。。
引用 5 楼 DBA_Huangzj 的回复:
从定义上: 覆盖索引:后面有include,并且可以避免索引宽度的限制,一般用于处理丢失索引。 复合索引:一个索引包含1个以上的列。
开启时代 2012-12-26
  • 打赏
  • 举报
回复
多看 多思考喽。这么白话了
發糞塗牆 2012-12-26
  • 打赏
  • 举报
回复
从定义上: 覆盖索引:后面有include,并且可以避免索引宽度的限制,一般用于处理丢失索引。 复合索引:一个索引包含1个以上的列。
极品老土豆 2012-12-26
  • 打赏
  • 举报
回复
这个是百度的,我看过,看不明白。
引用 3 楼 lixzhong 的回复:
联合索引和覆盖索引有很大的区别: 覆盖索引是查询的列可以直接通过索引提取,比如只查询主键的列!或者查询联合索引的所有列或者左边开始的部分列(注意有顺序的) 而联合索引并不一定只从索引中能获取到所有的数据,这个取决于你所查询的列。比如select * from table where ××××××;的方式就不太可能是覆盖索引。因此如果你查询的列能用到联合索引,且你查询的列都能通过联合索引获取,比……
开启时代 2012-12-26
  • 打赏
  • 举报
回复
联合索引和覆盖索引有很大的区别: 覆盖索引是查询的列可以直接通过索引提取,比如只查询主键的列!或者查询联合索引的所有列或者左边开始的部分列(注意有顺序的) 而联合索引并不一定只从索引中能获取到所有的数据,这个取决于你所查询的列。比如select * from table where ××××××;的方式就不太可能是覆盖索引。因此如果你查询的列能用到联合索引,且你查询的列都能通过联合索引获取,比如你只查询联合索引所在的列或者左边开始的部分列,这就相当于覆盖索引了。通常为了让查询能用到覆盖索引,就将要查询的多列数据设置成联合索引
极品老土豆 2012-12-26
  • 打赏
  • 举报
回复
我是想问,他们之间的区别,如何走的B树。
引用 1 楼 lixzhong 的回复:
INDEX SEEK 说明查询高效的使用了索引。
加载更多回复(3)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧