索引(优缺点)

索引(优缺点)一、索引概念在关系数据库中,索引是一种单独的、物理的,对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。二、索引的优点1、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2、可以大大加快数据的检索速度,这也是创建索引…

大家好,又见面了,我是你们的朋友全栈君。

一、索引概念

在关系数据库中,索引是一种单独的、物理的,对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

二、索引的优点

1、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 

2、可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 

3、可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 

4、在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 

5、通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能

三、索引的缺点

1、创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。 

2、索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 

3、当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

四、索引的分类

1、聚集索引,表数据按照索引的顺序来存储的。对于聚集索引,叶子结点即存储了真实的数据行,不再有另外单独的数据页。

2、非聚集索引,表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点包含索引字段值及指向数据页数据行的逻辑指针,该层紧邻数据页,其行数量与数据表行数据量一致。 

3、在一张表上只能创建一个聚集索引,因为真实数据的物理顺序只可能是一种。如果一张表没有聚集索引,那么它被称为“堆集”(Heap)。这样的表中的数据行没有特定的顺序,所有的新行将被添加的表的末尾位置。

五、数据查询

索引提供指向存储在表的指定列中的数据值的指针,然后根据指定的排序顺序对这些指针排序。
数据库使用索引以找到特定值,然后顺着指针找到包含该值的行。
这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息。

当表中有大量记录时,若要对表进行查询:
第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;
第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。

六、索引的实现 

常见的数据库索引是B-tree索引,虽然Hash 索引效率很高,但是它有很多弊端,比如 Hash 索引仅仅能满足”=”,”IN”和”<=>”查询,不能使用范围查询等,这些弊端导致其不是常见的数据库索引。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/141500.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Java类加载机制与Tomcat类加载器架构

    Java类加载机制与Tomcat类加载器架构Java类加载机制类加载器虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。类加载器可以说是Java语言的一项创新,也是Java语言流行的重要原因之一,它最初是为了满足JavaApplet的需求而开发出来的。虽然目前JavaA

  • laravel-admin 自定义导出表单

    laravel-admin 自定义导出表单

    2021年10月30日
  • 电脑警报声

    电脑警报声电脑异常报警声音:1短内存刷新失败2短内存ECC较验错误3短系统基本内存(第一个64KB)检查失败4短系统时钟出错5短中央处理器(CPU)错误6短键盘控制器错误7短系统实模式错误,不能切

  • Pycharm批量注释代码和取消注释代码「建议收藏」

    Pycharm批量注释代码和取消注释代码「建议收藏」注释代码和取消注释代码的快捷键都一样ctrl+/

  • 抓包工具charles的https抓包配置

    抓包工具charles的https抓包配置PC端安装ssl证书单击安装证书 单击下一步,修改证书存储路径,如下图单击下一步直到完成  手机客户端安装证书手机浏览器访问地址证书下载地址:http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/https://www.charlesproxy.com/docum…

  • mac命令行:E325: ATTENTION

    mac命令行:E325: ATTENTIONE325:ATTENTIONFoundaswapfilebythename”.bash_profile.swp”ownedby:rootdated:FriAug2516:23:422017filename:~root/.bash_profilemodified:nouse

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号