索引

本文详细介绍了数据库索引的基础知识,包括索引的作用、类型,如聚簇索引与非聚簇索引、联合索引与覆盖索引,以及Btree和Hash索引的特性和限制。讨论了索引失效的情况,并强调了选择高区分度字段作为索引的重要性。
摘要由CSDN通过智能技术生成

在数据之外,数据库系统还维护着特定结构,这些数据结构以某种方式引用指向数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构,就是索引.
索引在MySQL中也叫做键,是存储引擎用于快速找到记录的一种数据结构,尤其是当表中的数据量越来越大时,索引对性能的影响越来越大。索引优化是对查询性能优化最有效的手段了,索引能够轻易将查询性能提高好几个数量级.

1.索引基础

在MySQL 中,先在索引中找到对应的值,然后根据匹配的索引记录找到对应的数据行。索引可以包含一个或则多列的值,如果包含多个列,则列的顺序也很重要,Mysql 只能高效的使用索引的最左前缀列。索引有很多类型,可以在不同的场景提供更好的性能,在MySQL中,索引是存储引擎层而不是在服务层实现的,不同存储引擎的索引的工作方式也不一样,也不是所有的存储引擎都支持所有类型的索引。
①从数据存储结构角度:B Tree索引(B-Tree或B+Tree索引)、hash索引(memory引擎支持)、R-Tree索引(空间数据索引,MyISAM支持,用作地理数据存储)、FULLTEXT(全文)索引(MyISAM、InnoDB支持)

②从物理存储角度:聚簇索引(也称聚集索引)、非聚簇索引(也称非聚集索引)
聚簇索引:在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同,一个表只能包含一个聚集索引,比如SQL SERVER、MySQL默认是在主键上建立聚集索引的。如果某索引不是聚集索引,则表中行的物理顺序与键值的逻辑顺序不匹配。

非聚簇索引:(也叫二级索引)二级索引需要两次索引查找,而不是一次才能取到数据,因为存储引擎第一次需要通过二级索引找到索引的叶子节点,从而找到数据的主键,然后在聚簇索引中用主键再次查找索引,再找到数据。

二级索引不适合用在排序的场合。因为聚簇索引本身已经是按照物理顺序放置的,排序很快。非聚簇索引则没有按序存放,需要额外消耗资源来排序。

③从应用层次来分:普通索引、唯一索引、主键索引、空间索引(只有MyISAM支持且支持的不好)
唯一索引 唯一索引是不允许其中任何两行具有相同索引值的索引。比如学号,身份证号
当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。例如,如果在employee表中职员的姓(lname)上创建了唯一索引,则任何两个员工都不能同姓。

主键索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值