首页 新闻 会员 周边

有关建立索引键列与包含性列疑问

0
[待解决问题]

我这里添加了包含性列,为啥还必须添加也给索引键列呢?包含性列不是查询字段,索引键列不是order by或者where么,如果我没有where或order by呢?应该就不用添加索引键列了吧?

shuai7boy的主页 shuai7boy | 菜鸟二级 | 园豆:225
提问于:2018-01-08 23:00
< >
分享
所有回答(2)
0

包含性列基于索引键列,有包含性列那么一定有索引键列,索引键和order by以及什么where没关系,只是查询条件走不走索引罢了!基础还不行,还是首先好好了解索引以及原理,以及各种索引创建的方式!

Jeffcky | 园豆:2789 (老鸟四级) | 2018-01-08 23:42

那我想给UserName添加聚集索引,然后我添加在包含性列里面,那索引键列该添加什么呢?我主键ID和Age都是int类型的,Age没有建立索引。这两个我看都能添加,这怎么选择?

支持(0) 反对(0) shuai7boy | 园豆:225 (菜鸟二级) | 2018-01-13 21:49

@shuai7boy: 好好学习一下索引基础吧,可以参考我写的SQL Server系列:http://www.cnblogs.com/CreateMyself/category/810461.html

第一关于包含关系即Include,只是返回你查询的列免从基表再查询而导致走KEY查找。索引的创建最起码强调唯一性。你没有实际场景,没有将问题描述清楚,无法给你参考答案。比如你说Age没有创建索引,你是否要返回Age呢?从中也可以看到你对索引知识薄弱,你觉得Age能创建索引?

支持(0) 反对(0) Jeffcky | 园豆:2789 (老鸟四级) | 2018-01-16 00:16

@shuai7boy: 好好补下基础,基础不行,即使给了你参考答案你也是一知半解!

支持(0) 反对(0) Jeffcky | 园豆:2789 (老鸟四级) | 2018-01-16 00:17
0

问题写的不太清楚

首先索引是为了优化查找性能.所以你不用筛选或排序.直接遍历整个表.那索引就是没用的.

然后.在使用了索引以后.如果要查找的列不在索引列表+ID列中.那就会通过ID再去查询那行的数据.来得到要查询的列.而包含性列就可以把那个要查找的列加进来.这样他就不用再去表里查一次了.

吴瑞祥 | 园豆:29449 (高人七级) | 2018-01-09 10:12

如果我想查询UserName,给UserName添加非聚集索引,而且我通过UserName进行排序,然而我添加索引列时,我发现只能添加int类型的,那这个索引键列如何选择?

支持(0) 反对(0) shuai7boy | 园豆:225 (菜鸟二级) | 2018-01-13 21:52

sql server 还有这个功能呀,我用mysql没听说有这种功能,只能是把要查询的列放到索引里面,这样就能得到索引覆盖查询的效果。

那sql server 这样做的代价就是索引变得更大了,需要更多的存储空间了

支持(0) 反对(0) 会长 | 园豆:12401 (专家六级) | 2022-02-15 14:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册