聚集索引与非聚集索引的用法举例与使用注意

  • 聚集索引

    • 用法举例

      • 小明需要查找一个人的姓名,知道他在公司的营销部门的1010办公室的4号座位、这个时候如果需要专门为小明建一个聚集索引表就是,以公司部门表内部门名称排序,再以房间总表序号排序,最后以房间详细表的座位表排序,这样就可以最快的找到他要找的人
      • 聚集索引类似于一个字典,我们知道拼音来寻找字,首先我们知道字音节的首字母,从按a-z排序的字典中找到这个字首字母所在的区域,再从这个区域找到韵母所在的区域,当然韵母在字典中也有顺序,最后就可以找到我们想要的字了
    • 注意事项
      • 限制原则

        • 每个表只能有一个聚集索引,但是可以添加多个用以排序的列,但是这样明显效率是比较低下的,相当于增加了索引的长度,但是这样能够保证别人可以在知道其他额信息时也能够找到这个人的信息
        • 数据管理员应该精益求精,过多的不适合的索引会引起索引碎片,每新建一个索引也会增加系统的资源占用
      • 使用聚集索引的情况
        • 包含大量非重复的列
        • 使用运算符》《》=》=《= 返回一个范围值的查询
        • 被连续访问的列
        • 返回大量结果集的查询
        • 经常被用来连接或者groupby的列,一般来说时外键,使用这些列进行索引的时候,sqlsever可以不再对表进行排序,节省时间
        • 联机事务处理需要快速查找单行的结果,这个时候会用到使用主键创建的聚集索引
  • 非聚集索引
    • 用法举例

      • 小明需要找一个人的姓名,知道她在公司的营销部门 的1010办公室的4号座位,这个时候由于没有聚集索引,所以使用了前台的非聚集索引查询这个人的位置
      • 查字典一样,如果我们使用的是笔画查询,这样可以直接在前面查询到这个字,然后根据这个字的页码找到这个字
    • 注意事项
      • 一个表可以有多个非聚集索引,非聚集索引只是在一个表内建立了索引与数据项的连接,不影响数据结构和内容
    • 使用非聚集索引的情况
      • 包含大量非重复值的列
      • 不返回大型结果集
      • 返回精确匹配查询时经常使用的列
      • 经常需要使用连接和分组的决策支持软件,在使用丽娜姐和分组的列上声明多个非聚集索引,在每个外键上面使用聚集索引
      • 在一个查询中覆盖所有的列,会消除对于表或者聚集索引的访问
时间: 2024-10-12 15:52:12

聚集索引与非聚集索引的用法举例与使用注意的相关文章

聚集索引与非聚集索引

转自:聚集索引和非聚集索引(整理) 官方说法: 聚集索引 一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序. 聚集索引确定表中数据的物理顺序.聚集索引类似于电话簿,后者按姓氏排列数据.由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引.但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样. 聚集索引对于那些经常要搜索范围值的列特别有效.使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻.例如,如果应用程序执行 的一个查询经

主键,组合主键,聚集索引,非聚集索引,唯一索引

前言: 基于Oracle数据库谈谈索引们的问题,以及在什么情况下使用什么索引, 组合主键,怎么根据实际业务需求来定制自己的索引,主键的应用,来提升系统的性能. 1:主键? 在表中唯一的,也是聚集索引.作用于快速查询.该列唯一. Java代码 复制代码 收藏代码 1.ID NUMBER(38,0) PRIMARY KEY NOT NULL, 2:组合主键? 在表中以多个字段组成在表中是唯一的,也是聚集索引.作用于快速查询.该组合列唯一. Java代码 复制代码 收藏代码 1.CREATE TABL

聚集索引和非聚集索引

聚集索引 一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序.  聚集索引确定表中数据的物理顺序.聚集索引类似于电话簿,后者按姓氏排列数据.由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引.但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样.    聚集索引对于那些经常要搜索范围值的列特别有效.使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻.例如,如果应用程序执行 的一个查询经常检索某一日期范围内的记录,则使用聚集索

聚焦-聚集索引对非聚集索引的影响(四)

前言 在学习SQL 2012基础教程过程中会时不时穿插其他内容来进行讲解,相信看过SQL Server 2012 T-SQL基础教程的童鞋知道前面写的所有内容并非都是摘抄书上内容,如若是这样那将没有任何意义,学习的过程必须同时也是一个思考的过程,无论是独立思考也好还是查资料也罢都是思考而非走马观花,要不然过一段时间又会健忘.简短的内容,深入的理解. 话题 非聚集索引定义:非聚集索引也是一个B树结构,与聚集索引不同的是,B树的叶子节点存的是指向堆或聚集索引的指针.你真的理解了吗??你能举出例子吗?

SQL Server中的联合主键、聚集索引、非聚集索引

我们都知道在一个表中当需要2列以上才能确定记录的唯一性的时候,就需要用到联合主键,当建立联合主键以后,在查询数据的时候性能就会有很大的提升,不过并不是对联合主键的任何列单独查询的时候性能都会提升,但我们依然可以通过对联合主键中的首列除外的其他列建立非聚集索引来提高性能.本文将对联合主键.聚集索引.非聚集索引对查询性能的影响举例说明.步骤一,建立一个测试表,并且插入350万条以上的数据. /*创建测试数据表*/create table MyTestTable(id varchar(10)not n

SQL存储原理及聚集索引、非聚集索引、唯一索引、主键约束的关系(补)

索引类型 1.          唯一索引:唯一索引不允许两行具有相同的索引值 2.          主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型.主键索引要求主键中的每个值是唯一的,并且不能为空 3.          聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个 4.          非聚集索引(Non-clustered):非聚集索引指定表的逻辑顺序.数据存储在一个位置,索引存储在另一个位置,索引中包含指

聚集索引和非聚集索引(整理)

From : http://www.cnblogs.com/aspnethot/articles/1504082.html 官方说法: 聚集索引 一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序.  聚集索引确定表中数据的物理顺序.聚集索引类似于电话簿,后者按姓氏排列数据.由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引.但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样.    聚集索引对于那些经常要搜索范围值的列特别有效.使用聚集索引找到

聚集索引和非聚集索引的根本区别

聚集索引和非聚集索引的根本区别是表记录的排列顺序和与索引的排列顺序是否一致,聚集索引表记录的排列顺序与索引的排列顺序一致,优点是查询速度快,因为一旦具有第一个索引值的纪录被找到,具有连续索引值的记录也一定物理的紧跟其后.      聚集索引的缺点是对表进行修改速度较慢,这是为了保持表中的记录的物理顺序与索引的顺序一致,而把记录插入到数据页的相应位置,必须在数据页中进行数据重排,降低了执行速度.建议使用聚集索引的场合为: a.此列包含有限数目的不同值: b.查询的结果返回一个区间的值: c.查询的

35. SQL -- 聚集索引和非聚集索引(1)

索引概述: 用户对数据库最频繁的操作是进行数据查询.一般情况下,数据库在进行查询操作时需要对整个表进行数据搜索.当表中的数据很多时,搜索数据就需要很长的时间,这就造成了服务器的资源浪费.为了提高检索数据的能力,数据库引入了索引机制.数据库索引好比是一本书前面的目录,能加快数据库的查询速度. 例如这样一个查询: select * from table1 where id=44. 如果没有索引,必须遍历整个表,直到ID 等于44 的这一行被找到为止:有了索引之后(必须是在ID 这一列上建立的索引),