- 聚集索引
- 用法举例
- 小明需要查找一个人的姓名,知道他在公司的营销部门的1010办公室的4号座位、这个时候如果需要专门为小明建一个聚集索引表就是,以公司部门表内部门名称排序,再以房间总表序号排序,最后以房间详细表的座位表排序,这样就可以最快的找到他要找的人
- 聚集索引类似于一个字典,我们知道拼音来寻找字,首先我们知道字音节的首字母,从按a-z排序的字典中找到这个字首字母所在的区域,再从这个区域找到韵母所在的区域,当然韵母在字典中也有顺序,最后就可以找到我们想要的字了
- 注意事项
- 限制原则
- 每个表只能有一个聚集索引,但是可以添加多个用以排序的列,但是这样明显效率是比较低下的,相当于增加了索引的长度,但是这样能够保证别人可以在知道其他额信息时也能够找到这个人的信息
- 数据管理员应该精益求精,过多的不适合的索引会引起索引碎片,每新建一个索引也会增加系统的资源占用
- 使用聚集索引的情况
- 包含大量非重复的列
- 使用运算符》《》=》=《= 返回一个范围值的查询
- 被连续访问的列
- 返回大量结果集的查询
- 经常被用来连接或者groupby的列,一般来说时外键,使用这些列进行索引的时候,sqlsever可以不再对表进行排序,节省时间
- 联机事务处理需要快速查找单行的结果,这个时候会用到使用主键创建的聚集索引
- 限制原则
- 用法举例
- 非聚集索引
- 用法举例
- 小明需要找一个人的姓名,知道她在公司的营销部门 的1010办公室的4号座位,这个时候由于没有聚集索引,所以使用了前台的非聚集索引查询这个人的位置
- 查字典一样,如果我们使用的是笔画查询,这样可以直接在前面查询到这个字,然后根据这个字的页码找到这个字
- 注意事项
- 一个表可以有多个非聚集索引,非聚集索引只是在一个表内建立了索引与数据项的连接,不影响数据结构和内容
- 使用非聚集索引的情况
- 包含大量非重复值的列
- 不返回大型结果集
- 返回精确匹配查询时经常使用的列
- 经常需要使用连接和分组的决策支持软件,在使用丽娜姐和分组的列上声明多个非聚集索引,在每个外键上面使用聚集索引
- 在一个查询中覆盖所有的列,会消除对于表或者聚集索引的访问
- 用法举例